私たちのアプリケーションは単純なUser.ReadBasic.All関数を実行します。これは、私が理解しているところでは、管理者権限を必要としません。 https://graph.microsoft.io/en-us/docs/authorization/app_onlyAuthorization_IdentityNotFoundエラーMSグラフAPI
POST https://login.microsoftonline.com/{tenantId}/oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials
&client_id=<clientId>
&client_secret=<clientSecret>
&resource=https://graph.microsoft.com
私は、有効なアクセストークンを取得することができています、次のエラーメッセージが返されたグラフ呼び出すときしかし:
“code": "Authorization_IdentityNotFound", "The identity of the calling application could not be established."
を我々は我々のアプリを設定しているここに文書フローを使用して 管理コンソールでUser.ReadAll.Basic権限を持っていると面白いのは、独自のクレデンシャル/トークンキャッシュを使用してAppIdと秘密のConfidentialClientApplicationインスタンスをスピンアップするときに、APIから成功した結果を返すことですトークンのAcquireTokenSilentAsyncを呼び出す:
string signedInUserID = ClaimsPrincipal.Current.FindFirst(ClaimTypes.NameIdentifier).Value;
tokenCache = new SessionTokenCache(
signedInUserID,
HttpContext.Current.GetOwinContext().Environment["System.Web.HttpContextBase"] as HttpContextBase);
ConfidentialClientApplication cca = new ConfidentialClientApplication(
appId,
redirectUri,
new ClientCredential(appSecret),
tokenCache);
しかし、私たちはユーザーとのやりとりがないため、ユーザー資格情報とトークンキャッシュで返信してアクセストークンを取得したくないことが理想的です。私はなぜ1つのシナリオが動作し、もう1つがIdentityNotFoundエラーを返すのか分かりません。あなたが持っているアドバイスは大歓迎です。
これを解決できましたか?私は同じ問題を抱えています – NBajanca
こんにちは@NBajancaはい、私たちがアクセスしようとしている特定のスコープの管理者権限に関する問題でした。私たちのアプリケーションに、管理者からディレクトリデータを読み込むためのアクセス権がテナントで取得されたら、アプリID(私たちはアプリの秘密よりも安全な証明書を使用することにしました)に問い合わせることができました。その他の質問があればお知らせください – ranah
ありがとう、私はその間にもそれを見つけました。私はMicrosoftのグラフのドキュメントで、彼らがスコープをより良く説明できるかどうかを確認するために問題を作りました – NBajanca