azure-ad-b2c - 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 的配置?
解决方案
您描述的设置实际上是不可能的。您已在 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 的访问权限并代表用户进行操作。
推荐阅读
- java - 在java中加载图像后FPS下降
- arrays - 在c ++中将递归代码转换为将字符串反转为迭代代码
- javascript - 传单 js 添加/删除
- reactjs - 自定义 Highcharts desc 标签
- c++ - 如何关闭 QML/Javascript 代码中的窗口(涉及 C++ 代码)?
- compression - 对于随机内容的巨大目录(1 - 10TB)是否有任何好的 tar 压缩算法?
- java - Java Sockets not working on Android (ECONNREFUSED)
- android - 单击我的工具栏时出现 Nullpointer 异常错误
- neo4j - 在 neo4j 中存储日期
- java - Weblogic - JAX-RS 应用程序在 JAX-RS 库引用时中断