0

以前にいくつかのカスタム コネクタを作成したことがありますが、何らかの理由で、作成した API に対してカスタム コネクタを認証する際に実際の問題が発生しています。

API は .netcore 5 で記述されており、接続しようとしているのと同じテナントで WebApp としてホストされています。認証設定を確認したところ、ClientId は下の画像の 37008370 clientid GUID を指しています。

これは、コネクタで認証を設定する方法です ここに画像の説明を入力

blazor アプリを使用してこの API に接続したので、認証は正しく設定されていると思います。

カスタム コネクタの認証をセットアップしようとすると、次の応答が返されます

{  "content-length": "0",  "date": "Wed, 20 Oct 2021 10:11:51 GMT",  "request-context": appId=cid-v1:4e1e4b6a-ace8-48e9-8121-546d6e834953",  "www-authenticate": "Bearer error=\"invalid_token\", error_description=\"The audience 'api://37008370-*********' is invalid\"",  "x-ms-apihub-cached-response": "false",  "x-powered-by": "ASP.NET"}

すべてを正しくセットアップしたと思いますが、どこが間違っているのかわかりません。

どんな助けでも感謝します。

ありがとう

スチュアート

4

1 に答える 1

0

トークンのオーディエンスは、登録されているアプリのクライアント ID と常に一致する必要があります。エラーの原因は同じです。オーディエンスは api://xxxx-xx で、クライアント ID=3700-xxx です。リソースは、リソースのアプリ ID GUID、またはリソースに登録されている有効なアプリ ID URI にすることができます。AAD は、指定した値に基づいて、到達しようとしているリソースを識別できる必要があります。

アプリ ID GUID を使用する場合、オーディエンス クレームがアプリ ID GUID である AAD からトークンを取得することに注意してください。または、アプリ ID URI を使用する場合は、その URI がトークンの対象ユーザー クレームとして表示されます。

そのため、コードのアプリ設定に追加する必要がありますclientId :api://xxxxx-xxxx(これは、Azure 広告アプリ登録ポータルの API ブレードの公開に存在するアプリケーション ID URI です)。

Azure によってトークンに対して生成される "aud" 値は、AD アプリケーション マニフェストの "accessTokenAcceptedVersion" プロパティによっても制御されます。

このプロパティは、生成されるアクセス トークンのバージョンを定義します。http://jwt.ioで jwt トークンを確認してください。Azure ad .app"accessTokenAcceptedVersion" プロパティ値のマニフェストを確認してください。おそらく null または one であるか、 two である必要があります。null の場合、おそらく api:// プレフィックスの追加が考慮されます。else api:// プレフィックスは無視できます。

于 2021-10-21T14:02:52.943 に答える