我对用户通过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所需的某些配置?
答案 0 :(得分:1)
您描述的设置实际上是不可能的。 您已在AAD刀片中创建了一个应用程序注册表,并为其分配了Ms图权限。 然后,您收到的错误是针对AAD B2C端点的,而不是针对您的应用程序针对的AAD端点(因为无法为Graph api分配AAD B2C应用程序的权限)。因此,您已使用AAD应用程序并尝试针对B2C端点进行身份验证-无法正常工作。
您不能通过针对B2C端点进行身份验证的B2C用户访问ms图。
您可以通过AAD用户或B2C目录内的AAD用户通过AAD或AAD B2C目录的AAD端点访问ms图。
在B2C方案中,通常的模式是使用客户端凭据对B2C端点进行用户身份验证,并对AAD端点进行API身份验证,以获得对Graph API的访问权并代表用户进行操作。