0

IAのSSO ドキュメントによると、これらの属性が利用可能である必要があります (属性 URI で少し推測しています)。

open id リクエストのステージ 3 で渡されたクエリ文字列を確認すると、存在する属性は次のとおりです。

バグ、ドキュメントのエラー、またはキーボードの後ろのナットの緩み?

4

1 に答える 1

0

ここでの2つの問題は、最初の問題は、フルネームと電子メールのみを要求していたカットアンドペーストコーディングの急いでです。コードを修正して、名、姓、レルムIDをリクエストしました。これで、名と姓がうまくいきます。ただし、レルムIDの問題の根底に到達するには、かなりの時間を費やしました。まず、ドキュメントには属性uriに関する明確な回答がありませんでした。ただし、このスレッドhttps://idnforums.intuit.com/textthread.aspx?catid=69&threadid=16954で明確な答えを見つけることができました。ポールジャクソンはここで何が起こっているのか明確な考えを与えます:

  1. レルムIDの属性はhttp://axschema.org/intuit/realmIdです。
  2. 属性が通らない場合があります

このスレッドで彼の提案に基づいたテクニックをまとめました。基本的に、レルムIDが取得されない場合は、クエリ文字列にrealmIdとして含まれている参照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 に答える