ここから「v2.0 エンドポイントでマルチテナント デーモンを構築する」ための Azure サンプルをダウンロードしました: https://github.com/Azure-Samples/active-directory-dotnet-daemon-v2
にアプリケーションを登録しapps.dev.microsoft.com
、Application Permission スコープを User.Read.All に設定し、コードの Startup.Auth.cs でアプリケーション ID と生成されたパスワード シークレットを置き換えました。
サンプル コードは問題なく動作しますが、管理者の同意付与が機能していないようです。
のコードはAccountController.RequestPermissions()
、管理者の同意要求を正常に作成して送信します。同意ページに正しいスコープが表示されます: 「すべてのユーザーの完全なプロファイルを読み取る」。同意すると、https://localhost:44316/Account/GrantPermissions?admin_consent=True&tenant=my-tenant-idにリダイレクトされ、許可が成功したことが示されます。その後、Azure portal のエンタープライズ アプリケーションにもアプリが表示されます。
ただし、https://graph.microsoft.com/v1.0/usersを呼び出すとUsersController.Index
、「403 Forbidden」という結果になります。Fiddler のエラーの詳細は次のように表示されます。
"code": "Authorization_RequestDenied",
"message": "Insufficient privileges to complete the operation."
そのリクエストの JWT Bearer トークンには、正しいテナント ID と単一のロール「User.Read.All」が保持されています。
私のアカウントはこのテナントのグローバル管理者であり、graph.microsoft.io でユーザーにクエリを実行できます。
6 月 30 日付けのこの回答は、アプリ モデル v2 で admin_consent を使用することはまだできないことを示唆しています。ただし、ダウンロードしたサンプルは 9 月下旬のもので、まさにこのシナリオを示しているため、それがサポートされることを期待していました。
admin_consent はアプリ モデル v2 で既にサポートされていますか? もしそうなら、誰かが私が何がうまくいかないのかを見つけるのを手伝ってくれますか? ありがとう。