4

mod_auth_openidc を Google と連携させ、OP として phpOIDC の手巻きバージョンを使用し、mod_auth_openidc を ID プロバイダーとして使用しています。

私の問題は、Microsoft の実装のバグのようです。

mod_auth_openidc は優れた mod であり、かなりの検証ログを実行します。

JWT で返されるものの 1 つは、オーディエンスである「aud」パラメーターです。

Open ID Connect 仕様によると:

aud REQUIRED. Audience(s) that this ID Token is intended for. It MUST contain the OAuth 2.0 client_id of the Relying Party as an audience value. It MAY also contain identifiers for other audiences. In the general case, the aud value is an array of case sensitive strings. In the common special case when there is one audience, the aud value MAY be a single case sensitive string.

私のクライアント ID は 00000001234 です (私の実際の ID ではありません。単なる例です)。

Windows Live から nonce の「コード」を取得し、それをトークンと交換しましたが、返されたトークンの「aud」値は次のとおりです。

00000000-0000-0000-0000-00000001234

mod_auth_openidc は、返されたトークンの「aud」値を正しくチェックし、「aud」が構成された cliend_id と一致しないため、エラーで応答します。

私の質問は、トークンの対象者を検証しない以外に、返されたトークンの「aud」値に対してクライアント ID を正しく返すように、MS Developer コンソールでアプリを構成する方法はありますか?

その実装でそのようなバグを報告するのに最適な場所はどこですか?

4

2 に答える 2

2

実際、ドキュメントのどこにも、login.live.comMS Live が OpenID Connect に準拠しているとは書かれていません。OAuth 2.0 の上に独自の SSO プロトコルを構築したことは言及されています。

openidMS Live が OpenID Connect の重要な部分 (よく知られている場所、JWKS URI、スコープなどに関するディスカバリー ドキュメント) をサポートしていることを試行錯誤によって発見したようです。これは私自身にとってニュースです。しかし、残念なことに、まだ小さなことが 1 つ欠けているようです。それが、MS Live ID の OpenID Connect サポートをまだ発表していない理由でもあると思われます。

Azure AD での MS の OpenID Connect 実装は、すでに完全に準拠していますが、Live ID はまだ準拠していません。あなたができることはバグMSだけだと思います。

于 2015-06-19T19:43:35.503 に答える
1

MSA では、00000000-0000-0000-0000-00000001234 と 00000001234 は同じアプリケーションの異なる識別子です。新しいアプリ ポータル (apps.dev.microsoft.com) は 128 ビットの識別子 (guid) を優先し、古いアプリ ポータル (account.live.com/developers/applications) は古い 64 ビットの識別子を優先します。id_token には常に新しい識別子が含まれます。

新しい識別子形式 (つまり、00000000-0000-0000-0000-00000001234) を使用して、要求 client_id をトークン 'aud' クレームと一致させることができます。

新しい識別子は、MSA と AAD の識別子が一致するように作成されました。

于 2016-06-07T18:24:52.280 に答える