管理员同意不适用于 v2 应用程序中的范围 User.Read.All
Admin consent does not work for scope User.Read.All in v2 App
我从这里将 Azure 示例下载到 'Build a multi-tenant daemon with the v2.0 endpoint':
https://github.com/Azure-Samples/active-directory-dotnet-daemon-v2
我在apps.dev.microsoft.com
注册了应用,设置Application Permission scope为User.Read.All,并在代码中Startup.Auth.cs替换了Application ID和生成的密码secret。
示例代码运行良好,但管理员许可授权似乎不起作用。
AccountController.RequestPermissions()
中的代码成功构建并发送了管理员同意请求。同意页面显示正确的范围:"Read all users' full profiles"。提供同意后,我被重定向到 https://localhost:44316/Account/GrantPermissions?admin_consent=True&tenant=my-tenant-id,显示授权成功。之后,我还看到该应用出现在我在 Azure 门户上的企业应用程序中。
然而,在 UsersController.Index
中调用 https://graph.microsoft.com/v1.0/users 仍然会导致“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?如果是这样,谁能帮我找出问题所在?谢谢。
你似乎什么都做对了。我们有一个关于此主题的活跃问题,如果您想参与,请加入 GitHub:https://github.com/Azure-Samples/active-directory-dotnet-daemon-v2/issues/1
在示例说明中,如果您不使用脚本,请密切注意 Register the client app (daemon-console)
中的步骤 5
上面写着:
- In the list of pages for the app, select API permissions
- Click the Add a permission button and then,
- Ensure that the Microsoft APIs tab is selected
- In the Commonly used Microsoft APIs section, click on Microsoft Graph
- In the Application permissions section, ensure that the right permissions are checked:
User.Read.All
- Select the Add permissions button
如果您select委派权限而不是应用程序权限,当您运行样本:
Authorization_RequestDenied
Insufficient privileges to complete the operation.
如果你不注意,很容易犯这个简单的错误。
我从这里将 Azure 示例下载到 'Build a multi-tenant daemon with the v2.0 endpoint': https://github.com/Azure-Samples/active-directory-dotnet-daemon-v2
我在apps.dev.microsoft.com
注册了应用,设置Application Permission scope为User.Read.All,并在代码中Startup.Auth.cs替换了Application ID和生成的密码secret。
示例代码运行良好,但管理员许可授权似乎不起作用。
AccountController.RequestPermissions()
中的代码成功构建并发送了管理员同意请求。同意页面显示正确的范围:"Read all users' full profiles"。提供同意后,我被重定向到 https://localhost:44316/Account/GrantPermissions?admin_consent=True&tenant=my-tenant-id,显示授权成功。之后,我还看到该应用出现在我在 Azure 门户上的企业应用程序中。
然而,在 UsersController.Index
中调用 https://graph.microsoft.com/v1.0/users 仍然会导致“403 Forbidden”。 Fiddler 中的错误详细信息显示:
"code": "Authorization_RequestDenied",
"message": "Insufficient privileges to complete the operation."
该请求中的 JWT Bearer 令牌持有我正确的租户 ID 和一个角色:"User.Read.All"。
我的账号是这个租户的全局管理员,可以查询graph.microsoft.io上的用户。
App Model v2 是否已经支持admin_consent?如果是这样,谁能帮我找出问题所在?谢谢。
你似乎什么都做对了。我们有一个关于此主题的活跃问题,如果您想参与,请加入 GitHub:https://github.com/Azure-Samples/active-directory-dotnet-daemon-v2/issues/1
在示例说明中,如果您不使用脚本,请密切注意 Register the client app (daemon-console)
中的步骤 5上面写着:
- In the list of pages for the app, select API permissions
- Click the Add a permission button and then,
- Ensure that the Microsoft APIs tab is selected
- In the Commonly used Microsoft APIs section, click on Microsoft Graph
- In the Application permissions section, ensure that the right permissions are checked: User.Read.All
- Select the Add permissions button
如果您select委派权限而不是应用程序权限,当您运行样本:
Authorization_RequestDenied
Insufficient privileges to complete the operation.
如果你不注意,很容易犯这个简单的错误。