私の登録アプリとしてログインしようとしています.Azure Portal> App Registrations> App Registrations(プレビュー)>マイAPP NAME - APIアクセス許可
このドキュメント によると、トークンを要求するときにスコープパラメータにリソース識別子(APP ID URI
)を渡す必要があります。私はこのスコープパラメータが私に問題を引き起こすものであることを確認します。
範囲のさまざまなパラメータを試しました。
https://graph.Microsoft.com/.default
:カレンダーを読むのと同じように基本的な機能が機能しますが、デフォルトのアクセス許可は私のニーズにはほとんどないと思います。これがうまくいったので、他のパラメータが正しいと思います。範囲は問題です。
[APP-ID]/.default
:これは私に成功した反応を与えますが、基本的な読み取りカレンダー要求を含む要求を実行しようとするたびに、InvalidAuthenticationToken
が取得されます。トークン要求から取得した正しいトークンを渡していることをお知らせできます。
オンライン提案に基づく複数の異なるURLの組み合わせ。彼ら全員が戻ってくる
「リソースプリンシパル{resource-url}はテナント{ID}に見つかりませんでした。
私は問題を強く信じています私は私のアプリケーションのために正しいAPP ID URI
を渡していないということです。誰かがこのリソースを見つけることができる場所を教えてもらえますか?私がオンラインで検索したことすべては2歳以上で、新しいAzure Portalには同じではないようです。
クライアント認証情報(すなわち、ユーザなしでトークンを取得する)の場合は、scope
としてhttps://graph.Microsoft.com/.default
を渡す必要があります。
権限https://graph.Microsoft.com/.default
を指定すると、ポータルにアプリケーションを登録するときに指定した「アプリケーションのアクセス許可」が提供されています。
アプリケーションに必要なすべての「アプリケーションアクセス許可」を追加したら、テナントのスコープに対して「同意を付与」する必要があります(これはAPI Permissionsタブの下部のボタンです。
これらの場所にあると、/token
エンドポイントにPOST
を発行する必要があります(改行は読みやすさのためです、これは単一の文字列にする必要があります)。
POST https://login.microsoftonline.com/{{tenantDomain}}/oauth2/token
Content-Type: application/x-www-form-urlencoded
client_id={your-app-id}
&scope=https://graph.Microsoft.com/.default
&client_secret={your-client-secret}
&grant_type=client_credentials
これはこのようなものを返します。
{
"token_type": "Bearer",
"expires_in": "3600",
"ext_expires_in": "3600",
"expires_on": "1554431330",
"not_before": "1554427430",
"resource": "00000003-0000-0000-c000-000000000000",
"access_token": "eyJ0eXAiOiJKV1QiLCJub25jZS..."
}
グラフに電話をかけると、Authorization
headerをtoken_type access_token
に設定する必要があります。だから/users
を呼び出すと、次のようになります。
GET https://graph.Microsoft.com/v1.0/users
Authorization:"Bearer eyJ0eXAiOiJKV1QiLCJub25jZS..."
Host:"graph.Microsoft.com"
Accept:"application/json"