2017-10-13 10 views
2

ユーザー入力がない背景のJSアプリケーションがあるので、ユーザーの入力なしでアプリケーション認証を使用しています。私は、Azure ADポータルとapps.dev.microsoft.comでアプリをセットアップしました。私は、次の、私がしようとすると、グラフAPIを使用して、それを使用する場合Microsoft Graph OAuthの問題

client_id: application_id 
client_secret: generated key 
grant_type: client_credentials 
scope: "https://graph.microsoft.com/.default" 

これはしかし、access_tokenはを生成します:以下の身体に

login.microsoftonline.com/{Tenant}/oauth2/token 

私は次のエンドポイントを使用していますエラー

アクセストークンの検証エラー

ユーザー入力による通常のOAuthトークンと比較してトークンを調べると、私はscpではなく役割で渡されたことに気付きました。オーディエンスはgraph.microsoft.comではなく私のアプリケーションです。

私は間違っていますか?

答えて

3

Azure ADポータルに登録されているアプリは、Azure AD V1.0エンドポイントで動作し、apps.dev.microsoft.comに登録されており、v2.0エンドポイントで動作します。まず、this documentを参照してv2.0エンドポイントに関する相違点を確認してください。

ユーザーとの対話(クライアント資格情報の流れ)なしでセキュアなリソースにアクセスするためのAzureのAD v2.0のを使用するには、/トークンV2.0エンドポイントにPOSTリクエストを送信する必要があります。

POST /common/oauth2/v2.0/token HTTP/1.1 
Host: login.microsoftonline.com 
Content-Type: application/x-www-form-urlencoded 

client_id=535fb089-9ff3-47b6-9bfb-4f1264799865&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret=qWgdYAmab0YSkuL1qKv5bPX&grant_type=client_credentials 

あなたの可能性Azure AD V2.0エンドポイントでOAuth 2.0クライアントの資格認定を使用する方法については、this documentを参照してください。

azure ad v1.0(Azureポータルに登録されているアプリ)をクライアントの資格フローとともに使用する場合は、this documentを参照してください。 azure ad v1.0では、クライアントアプリケーションが承認を要求しているresourceパラメータを指定する必要があります。シナリオでは、microsoft graph apiを呼び出すトークンを取得する場合は、リソースはhttps://graph.microsoft.com/になります。

+0

ありがとう、それは私の問題でした。私は、ポータルで作成したappとapp.devで作成した2つのアプリケーションを用意しました。私はv1とv2のエンドポイントを混同していました。 v1エンドポイントにリソースを追加し、v2の管理者同意urlを実行したら、すべて正常に動作しました。 ありがとう –

関連する問題