管理员同意不工作范围User.Read.All在v2应用程序



我从这里下载了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

    相关内容

    • 没有找到相关文章

    最新更新