この質問は、 「Azure ACS を使用して必要なクレームを OpenID ID プロバイダーに渡す方法」からの続きです。
ただし、問題に対する見方が少し異なるため、これを新しい質問として投稿しています。注: Azure セキュリティ フォーラムにもこれをクロスポストしていますが、これまでのところ有用な情報は得られていません。
Azure ACS サンプルは、任意の OpenID ID プロバイダーを ACS に追加できることを示しています。しかし、ACS がさまざまな一般的なプロバイダーの STS として私たちのプロジェクトで実際に役立つように、ACS を MyOpenID.com と連携させることに着手しました (これもサンプルで使用されています)。優れた Vittorioも示しているように、問題は、要求されない限り、MyOpenID が名前や電子メール アドレスなどのクレームを提供しないことです。Vittorio らは、これは MyOpenID が属性交換をサポートしていないためであると述べています。
しかし、私はそれについてよくわかりません。ACS が生成するリクエスト URL をもう少し深く掘り下げるopenid.ns.ax=http://openid.net/srv/ax/1.0
と、 や などのパラメータが表示されますopenid.ax.required=email,fullname,firstname,lastname
。また、openid.ax.type.email
タイプにタイプされaxschema.org/contact/email
ます。ここで、MyOpenID の問題が発生します。MyOpenID は axschema.org の型を認識しないため、電子メールの値を返しません。
私が知っていることは、MyOpenID がschema.openid.net/contact/email
型を理解しているということです。したがって、これに基づいて、ACS 要求 URL を手動で変更し、axschema の代わりに openid.net スキーマを使用しました。見よ、MyOpenID は反応し、私のメールアドレスが実際に返されることを示している.
myopenid.com/server エンドポイントに渡そうとしているパラメーターのリストを次に示します。
- openid.ns= http://specs.openid.net/auth/2.0
- openid.mode=checkid_setup
- openid.claimed_id= http://specs.openid.net/auth/2.0/identifier_select
- openid.identity= http://specs.openid.net/auth/2.0/identifier_select
- openid.realm= https://myazurenamespace.accesscontrol.windows.net:443/v2/openid
- openid.return_to= https://myazurenamespace.accesscontrol.windows.net:443/v2/openid ...
- openid.ns.ax= http://openid.net/srv/ax/1.0
- openid.ax.mode=fetch_request
- openid.ax.required=メールアドレス,フルネーム
- openid.ax.type.email= http://schema.openid.net/contact/email
- openid.ax.type.fullname= http://schema.openid.net/namePerson
残念ながら、応答が ACS に返されたときは十分ではなく、ACS は次のエラー コードで失敗します。
HTTP エラー コード: 400 メッセージ: ACS30000: OpenID サインイン応答の処理中にエラーが発生しました。内部メッセージ: ACS90014: 必須フィールド 'openid.ax.value.email' がありません。トレース ID: f8e09e6f-0765-4370-9f03-f744cce6fa2a タイムスタンプ: 2011-08-02 17:12:57Z
元のメール タイプを変更せずにフィールドを追加しようとしましたが、同じエラーしか発生しません。実際、AX を完全にサポートしていないのは ACS であり、特定の種類のクレームのみを受け入れるようにハードコードされているのではないかと疑い始めています。
問題は、私のリクエストパラメータがあなたに正しく見えるか、それともここで明らかな何かが欠けているかということです.
注:私の初期設定は機能しています。ACS 要求を変更せず、ACS で ID プロバイダーのパススルー ルールを 1 つだけ構成すると、MyOpenID ID プロバイダーを使用して ACS を介して Web サイトを正常に認証できます。ただし、ACS からの要求でクレーム タイプhttp://schema.openid.net/namePerson
またはhttp://schema.openid.net/contact/email