首页 > 解决方案 > azure ad b2c 图形 api 权限

问题描述

一旦用户通过 Azure Ad B2C 登录,我就有一个关于访问 Microsoft Graph Api 的问题。我正在尝试将我的应用程序迁移到通过 b2clogin.com 而不是 login.microsoft.com 登录,并且大多数情况下它都可以工作,除非我不能再调用 Microsoft Graph Api 来获取登录的用户配置文件。

我已经在我的 B2C 租户中将 Postman 设置为应用程序,并使用 https://graph.microsoft.com/User.Read 配置了 api 权限,但是当我尝试使用https://graph.microsoft.com获取令牌时/User.Read范围我收到以下错误

AADB2C90205:此应用程序对此 Web 资源没有足够的权限来执行操作

我不确定这个错误是什么意思,但是当我在门户中查看用户的登录时,我看到了 3 个登录。

第一个状态为中断,失败原因为

应用程序尝试执行静默登录,但用户无法静默登录。应用程序需要启动交互式流程,为用户提供登录选项。联系应用程序所有者。

第二个的状态为中断,失败原因为

应用 X 无权访问应用 Y 或权限已被撤销。或 用户或管理员未同意使用 ID X 的应用程序。为此用户和资源发送交互式授权请求。或者 用户或管理员未同意使用 ID X 的应用程序。向您的租户管理员发送授权请求以代表应用程序:Y 代表资源:Z。

第三个状态为 Success

几天来,我一直在查看文档,试图弄清楚这一点。

我缺少一些需要为 B2C 用户访问 Microsoft Graph Api 的配置?

标签: azure-ad-b2c

解决方案


您描述的设置实际上是不可能的。您已在 AAD 刀片中创建了一个 App Reg 并分配了 Ms 图形权限。然后,您收到的错误是针对 AAD B2C 端点,而不是针对您的应用程序的 AAD 端点(因为 AAD B2C 应用程序无法分配 Graph api 的权限)。因此,您使用了 AAD 应用程序并尝试针对 B2C 端点进行身份验证 - 这将无法正常工作。

您无法通过针对 B2C 端点进行身份验证的 B2C 用户访问 ms 图。

您可以通过 AAD 或 AAD B2C 目录的 AAD 端点,通过 B2C 目录内的 AAD 用户或 AAD 用户访问 ms 图。

在 B2C 场景中,正常模式是针对 B2C 端点对用户进行身份验证,并使用客户端凭据对 AAD 端点进行 API 身份验证,以获取对 Graph API 的访问权限并代表用户进行操作。


推荐阅读