0

根据 IA 的SSO 文档,这些属性应该可用(我在属性 URI 上猜测了一下):

查看在 open id 请求的第 3 阶段传递的查询字符串,以下是存在的属性:

错误、文档错误或键盘后面的螺母松动?

4

1 回答 1

0

这里有两个问题,第一个问题是我匆忙的剪切和粘贴编码,我只要求全名和电子邮件。我修改了代码以请求名字、姓氏和领域 ID。现在名字和姓氏都很好。然而,花了很多时间才找到领域 id 问题的根源。首先,文档没有对属性uri给出明确的答案;但是,我能够在此线程https://idnforums.intuit.com/textthread.aspx?catid=69&threadid=16954上找到明确的答案。保罗杰克逊清楚地知道这里发生了什么:

  1. 领域 id 的属性是http://axschema.org/intuit/realmId
  2. 有时属性不通过

我根据他在这个线程中的建议组合了一种技术。基本上,如果领域 id 没有通过,那么我将从在查询字符串中作为领域 ID 的引用 url 中解析它。显然,这很脆弱,但目前提供了一个“有效”的解决方案。

这是您可以在握手的第 3 阶段使用的代码片段。

 _realmId = fetch.GetAttributeValue(OpenId.IntuitWellKnownRealmId);

if (_realmId == null && httpRequest.UrlReferrer != null)
{
    var url = httpRequest.UrlReferrer.ToString();
    var i = url.IndexOf('?');
    if (i != -1)
    {
        var querystring = url.Substring(i);
        _realmId = System.Web.HttpUtility.ParseQueryString(querystring)["realmId"];
    }
}

我对这个解决方案零信任,保罗已经想通了。只是在这里发布以帮助任何搜索此问题的人。

于 2013-02-05T02:31:09.677 回答