我从这里下载了Azure示例以'使用v2.0端点构建多租户守护进程':https://github.com/Azure-Samples/active-directory-dotnet-daemon-v2
我在apps.dev.microsoft.com
中注册了应用程序,设置应用程序权限范围为User.Read。,并替换了代码中Startup.Auth.cs中的Application ID和生成的密码secret。
示例代码运行良好,除了admin同意授予似乎不起作用。
AccountController.RequestPermissions()
中的代码成功构建并发送了一个管理同意请求。同意页面显示了正确的范围:"读取所有用户的完整配置文件"。在提供同意后,我被重定向到https://localhost:44316/Account/GrantPermissions?admin_consent=True&tenant=my-tenant-id,显示授权成功。我还看到应用程序显示在我的企业应用程序在Azure门户之后。
然而,呼叫https://graph.microsoft.com/v1.0/users在UsersController.Index
仍然导致'403禁止'。Fiddler中的错误细节显示:
"code": "Authorization_RequestDenied",
"message": "Insufficient privileges to complete the operation."
该请求中的JWT Bearer令牌持有正确的租户id和单个角色:"User.Read.All"。
我的帐户是这个租户的全局管理员,它可以在graph.microsoft.io上查询用户。
这个6月30日的回复表明,还不可能在App Model v2中使用admin_consent。然而,我下载的示例日期是9月底,并显示了这个场景,所以我希望它同时被支持。
admin_consent已经在App Model v2中支持了吗?如果是这样,谁能帮我找出哪里出了问题?谢谢。
在示例的说明中,如果您没有使用脚本,请密切注意注册客户端应用程序(daemon-console)
中的步骤5。上面写着:
- 在应用的页面列表中,选择API权限
- 点击添加权限按钮,然后,
- 确保Microsoft api 选项卡被选中
- 在常用的Microsoft api 部分中,单击Microsoft Graph
- 在Application permissions部分中,确保检查了正确的权限: User.Read.All
- 选择添加权限按钮
如果选择委派权限而不是应用程序权限,则在运行示例时将得到以下错误:
Authorization_RequestDenied
Insufficient privileges to complete the operation.
你似乎每件事都做得很好。我们在这个主题上有一个活跃的问题,如果你想参与,请加入GitHub: https://github.com/Azure-Samples/active-directory-dotnet-daemon-v2/issues/1