【发布时间】:2020-05-09 05:11:52
【问题描述】:
我有一个关于在用户通过 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。
第三个状态为成功
几天来我一直在查看文档,试图弄清楚这一点。
我缺少一些需要为 B2C 用户访问 Microsoft Graph Api 的配置?
【问题讨论】:
-
您通常不应该使用客户端凭据流来调用 Graph API 吗?
-
我不确定。我有一个 Angular 应用程序并使用 msal.js,所以我不能使用客户端凭据流。我设置了 Postman 应用程序以确认 msal.js 没有问题我在图形 api 中调用“me”端点以在从 angular 应用程序登录后获取用户配置文件和图片。一切正常,直到我将权限切换到 b2clogin。之后我无法调用图形 api。我目前正在将 Graph Api 调用移动到我的 api 并使用客户端凭据流。我希望这能解决问题。我已经知道我可以从 Angular 应用程序调用我的 api。
标签: azure-ad-b2c