0

シングルテナントモードでactive-directory-dotnet-webapi-onbehalfofサンプルを実行しようとしています。テナントのグローバル管理者としてWebアプリケーションサービスとネイティブアプリクライアントを登録しました。テナント内のユーザーとしてサンプルを実行すると、同意がポップアップした後に初めてクライアントでトークンを取得してから、サービスにコールすることができますが、そこでは失敗します。何故ですか?ドキュメンテーションによれば、テナントの管理者がアプリケーションを登録するとき、それ以上の同意は必要ありません。私はリモートWebAPIがOBOトークンを取得しようとしたときに同意することはできないと思います。何かバグがあるようです... AADチーム、OBO機能の使用方法を明確にしてください。サンプルactive-directory-dotnet-webapi-onbehalfofが動作しない

AADSTS65001:ユーザーまたは管理者がID「b824502e-fe8a-4770-bd98-8d65a07efcc3」のアプリケーションの使用に同意していません。このユーザーとリソースに対する対話型承認要求を送信します。 トレースID:ad7843d0-be4e-4098-8f7c-43c8e5505cfc 相関ID:140466a4-7250-429f-8843-dbd4f63dc60e タイムスタンプ:2016年11月25日21:46:13Z

答えて

1

あなたが使用してアプリケーションを登録しますAzure管理ポータル(manage.windowsazure.com)をテナント管理者として使用している場合、同じテナントで後続のトークンが取得されている限り、同意を得てはいけません。

ネイティブクライアントアプリの同意を得て、そのエラーメッセージが表示されるので、あなたのアプリの同意を拒否する何かが満足できないと仮定する必要があります。

この問題を解決するには、エラーメッセージに示されているように、単に対話型承認リクエストを開始することをおすすめします。これは、アプリケーションのログインURLを生成し、特定のクエリ文字列を使用して、テナントの広い同意を促します(prompt = admin_consent)。ここで

はあなたが完了するために必要なURLのスケルトンです:

https://login.microsoftonline.com/<TenantID>/oauth2/authorize?client_id=<AppID>&response_type=code&redirect_uri=<RedirectURI>&resource=<ResourceURI>&prompt=admin_consent 

あなたが登録されているすべてのアプリケーションのためにこれを行うことができ、あなたが同意の問題に実行するべきではありません(あなたが実際として署名していると仮定するとテナント管理者)。

この問題が解決されることを願っております。

+0

はい、私はインタラクティブな同意を知っています - 問題は、OBO機能が文書化されているようにそのままでは機能しないことです。これはすぐに修正されることを願っています。 –

+0

本当にこれが同意の問題である場合、私はあなたがOBO機能で問題を見つけているように感じます。私のポストで述べたように、Azureポータルは一連の要件が満たされていると仮定して、同意を書いています。あなた側の調査は、同意記録が記録されない原因となっている問題を理解しようとすることです。たとえば、ユーザーアカウントが実際にテナント管理者ではないことがわかります。また、OBOフローに参加する各アプリケーションは、同意を記録する必要があります。 –

関連する問題