web-dev-qa-db-ja.com

Azure ADを使用したOAuth2-ユーザーの同意が得られない

OAuth2ワークフローを取得して、Azure ADで正しく実行しようとしています。私はこのソースからの指示に従っています: https://msdn.Microsoft.com/en-us/library/Azure/dn645542.aspx

次のリクエストを使用して、認証コードレスポンスを正常に取得できます:https://login.microsoftonline.com/[app-endpoint-id]/oauth2/authorize?response_type=code&client_id=[client-id]&redirect_uri=[redirect-uri]

次に、認証コードを使用して、次のようなhttp投稿でアクセストークンを要求します(Postmanを使用してこれをテストしています)。

POST /[app-endpoint-id]/oauth2/token HTTP/1.1 Host: login.microsoftonline.com Cache-Control: no-cache Postman-Token: ed098281-9aa4-6e5f-915d-0253d9a876d3 Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&client_id=[client-id]&code=[authorization_code]&redirect_uri=[redirect_uri]&client_secret=[client-secret]&resource=[app-url]

POSTリクエストから次のエラーメッセージが表示されます。

{"error": "invalid_grant"、 "error_description": "AADSTS65001:ユーザーまたは管理者は、ID 'app-id'のアプリケーションを使用することに同意していません。このユーザーとリソースに対してインタラクティブな認証リクエストを送信してください。\ r\nTrace ID:trace-di\r\n相関ID:correlation-id\r\nタイムスタンプ:2016-01-13 17:18:39Z "、" error_codes ":[65001]、" timestamp ":" 2016-01-13 17 :18:39Z "、" trace_id ":" trace-id "、" correlation_id ":" correlation-id "}

キャッシュをクリアし、認証コードの最初のリクエストを行うと、ログインにリダイレクトされます。ただし、このドキュメントに記載されているように、ログイン後にアプリを認証する方法はありません。

//Azure.Microsoft.com/en-us/documentation/articles/active-directory-integrating-applications/

ここで何が間違っていますか?アクセストークンを取得しようとしています。

17
Spensaur

実行中の問題は、アプリへのアクセスに使用しているテナントが、サポートされているアプリケーションのリストにアプリケーションを追加していないことです。インタラクティブフローを管理者として使用するよう指示しています。

同意は2段階のプロセスです。

1)まず、テナントの管理者がアプリを承認する必要があります。これは、1)アプリの使用を希望するテナントのAzureポータルで、または2)サインイン時にアプリを起動し、アプリに対して管理者資格情報を使用することで実行できます。

Azureポータルの承認の例:

2)次に、アプリを使用できることを管理者が同意した後、アプリを初めて使用する場合、追加のユーザー(非管理者)が個人情報に同意するように昇格します。

10
Brandon Werner

投稿リクエストでリソースを「 https://graph.windows.net 」として指定してみてください。

それは私のために働いた。

2
pooja karande

Azure ADの設定でそのようなアプリの追加が許可されていることを確認してください。 Azure ADアプリケーション>管理>ユーザー設定には、アプリの登録方法に影響するプロパティがいくつかあります。組織の誰かがアプリの登録を完全にオフにしたか、オプションを厳しく制限している可能性があります。これらの設定を確認できます。この質問には、いくつかの解決策があります here

0