1

我从这里下载了 Azure 示例以“使用 v2.0 端点构建多租户守护程序”: https ://github.com/Azure-Samples/active-directory-dotnet-daemon-v2

我在 中注册了应用程序apps.dev.microsoft.com,将应用程序权限范围设置为 User.Read.All,并在代码中的 Startup.Auth.cs 中替换了应用程序 ID 和生成的密码密码。

示例代码运行良好,只是管理员同意授权似乎不起作用。

中的代码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 Forbidden”。Fiddler 中的错误详细信息显示:

"code": "Authorization_RequestDenied", "message": "Insufficient privileges to complete the operation."

该请求中的 JWT Bearer 令牌包含我正确的租户 ID 和一个角色:“User.Read.All”。

我的账号是这个租户的全局管理员,可以在graph.microsoft.io上查询用户。

此响应日期为 6 月 30 日,表明尚无法将 admin_consent 与 App Model v2 一起使用。然而,我下载的示例可以追溯到 9 月下旬,并且准确地显示了这种情况,所以我希望它同时得到支持。

App Model v2 是否已支持 admin_consent?如果是这样,谁能帮我找出问题所在?谢谢。

4

2 回答 2

1

在示例说明中,如果您不使用脚本,请密切注意注册客户端应用程序 (daemon-console)中的步骤 5

它在哪里说:

  1. 在应用程序的页面列表中,选择API 权限
  • 单击添加权限按钮,然后,
  • 确保选中Microsoft API选项卡
  • 常用的 Microsoft API部分中,单击Microsoft Graph
  • 应用程序权限部分,确保检查了正确的权限: User.Read.All
  • 选择添加权限按钮

如果您选择Delegated permissions而不是Application permissions,您将在运行示例时收到以下错误:

Authorization_RequestDenied
Insufficient privileges to complete the operation.

如果您不注意,很容易犯这个简单的错误。

于 2021-04-17T21:11:30.593 回答
0

你似乎做的一切都是正确的。我们在这个主题上有一个活跃的问题,如果你想参与,请加入 GitHub:https ://github.com/Azure-Samples/active-directory-dotnet-daemon-v2/issues/1

于 2016-10-18T16:23:27.540 回答