web-dev-qa-db-ja.com

MicrosoftアプリのためのアプリID URIをどこに見つけることができますか?

私の登録アプリとしてログインしようとしています.Azure Portal> App Registrations> App Registrations(プレビュー)>マイAPP NAME - APIアクセス許可

このドキュメント によると、トークンを要求するときにスコープパラメータにリソース識別子(APP ID URI)を渡す必要があります。私はこのスコープパラメータが私に問題を引き起こすものであることを確認します。

範囲のさまざまなパラメータを試しました。

  1. https://graph.Microsoft.com/.default:カレンダーを読むのと同じように基本的な機能が機能しますが、デフォルトのアクセス許可は私のニーズにはほとんどないと思います。これがうまくいったので、他のパラメータが正しいと思います。範囲は問題です。

  2. [APP-ID]/.default:これは私に成功した反応を与えますが、基本的な読み取りカレンダー要求を含む要求を実行しようとするたびに、InvalidAuthenticationTokenが取得されます。トークン要求から取得した正しいトークンを渡していることをお知らせできます。

  3. オンライン提案に基づく複数の異なるURLの組み合わせ。彼ら全員が戻ってくる

    「リソースプリンシパル{resource-url}はテナント{ID}に見つかりませんでした。

私は問題を強く信じています私は私のアプリケーションのために正しいAPP ID URIを渡していないということです。誰かがこのリソースを見つけることができる場所を教えてもらえますか?私がオンラインで検索したことすべては2歳以上で、新しいAzure Portalには同じではないようです。

4
Minhal Shanjer

クライアント認証情報(すなわち、ユーザなしでトークンを取得する)の場合は、scopeとしてhttps://graph.Microsoft.com/.defaultを渡す必要があります。

権限https://graph.Microsoft.com/.defaultを指定すると、ポータルにアプリケーションを登録するときに指定した「アプリケーションのアクセス許可」が提供されています。

enter image description here

アプリケーションに必要なすべての「アプリケーションアクセス許可」を追加したら、テナントのスコープに対して「同意を付与」する必要があります(これは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"
1
Marc LaFleur