gpt4 book ai didi

microsoft-graph-api - 请求 Microsoft Graph 委派权限时,没有为 AD B2C 用户返回访问 token

转载 作者:行者123 更新时间:2023-12-05 01:12:19 27 4
gpt4 key购买 nike

用户故事:给定一个 ADB2C 用户,具有全局管理员角色和 01234567-901a-bcde-f012-3456789abcde 的 oid(不是真正的 oid),我希望能够登录作为该用户并从“https://graph.microsoft.com/beta/me”或“https://graph.microsoft.com/beta/users/01234567-901a-bcde-f012-3456789abcde”检索用户配置文件。两者都在文档中列为 B2C 的有效端点。

它不起作用:No Access Token!

在仅分配了 Microsoft Graph 权限范围的应用注册中,我使用 postman 请求不记名 token 以访问 MS Graph。有一个 Web 重定向 URI ( https://oauth.pstmn.io/v1/callback ),一个客户端密码,并且对 access 和 id token 都启用了隐式授权。

请求的范围是:openid offline_access https://graph.microsoft.com/Directory.AccessAsUser.All

同样,B2C 用户帐户具有全局管理员角色。

  • 隐式流返回错误消息

AADB2C90205: This application does not have sufficient permissions against this web resource to perform the operation.

  • 授权码流,当包含应用程序 secret 时,缺少访问承载 token 。有一个 ID token 和一个刷新 token ,但没有访问 token 。无论我是否将授权发送到外部浏览器,都有和没有 PKCE。

我租户中的应用程序有一个用户流,B2C_1_postman,基本上是默认的。它适用于 postman 、其他测试应用程序以及 B2C 管理 Blade 中的“运行用户流”功能。

身份验证端点是:

https://{Tenant}.b2clogin.com/{Tenant}.onmicrosoft.com/B2C_1_postman/oauth2/v2.0/authorize

token 端点是:

https://{Tenant}.b2clogin.com/{Tenant}onmicrosoft.com/B2C_1_postman/oauth2/v2.0/token

我已经通过 Microsoft 的 github 存储库中的几个桌面演示复制了这种行为,现在使用 Postman。该应用程序名为“ postman ”,位于 ADB2C 租户中。我授予它以下应用 API 范围:

Directory.AccessAsUser.All
Directory.Read.All
Directory.ReadWrite.All
Directory.email
Directory.offline_access
Directory.profile

此过程反射(reflect)了 https://github.com/Azure-Samples/active-directory-b2c-dotnet-desktop 的桌面演示设置的内容,唯一的异常(exception)是我希望我的桌面应用程序使用 MS Graph,而不是 NodeJS 示例应用程序。 (如果我为示例应用添加端点,这个应用注册就可以正常工作。但指定 MS Graph 范围总是返回一个空的访问 ID。)

我怎样才能让它工作?

最佳答案

通过 Graph API 管理用户似乎仍然需要使用应用程序权限。因此,您需要添加应用程序权限,而不是在 B2C 中向应用程序添加委派权限,您在其中以应用程序而不是代表用户的身份调用 Graph API。文档中的说明详细解释了应用程序注册:https://learn.microsoft.com/en-us/azure/active-directory-b2c/microsoft-graph-get-started

您需要向此应用授予图谱 API 的应用程序权限,而不是委托(delegate)权限。然后纯粹使用这些应用凭据来调用 Graph API。并且您需要使用底层 Azure AD 的 token 端点而不是 B2C 策略 token 端点。

由于您的应用是桌面应用(公共(public)客户端应用),您需要在后端服务中进行图谱 API 交互,您可以使用代表用户获取的 B2C token 对其进行身份验证。

关于microsoft-graph-api - 请求 Microsoft Graph 委派权限时,没有为 AD B2C 用户返回访问 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62275609/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com