Azure AD B2C检索令牌的错误“权限”

时间:2020-11-06 16:02:43

标签: azure authentication postman openid-connect azure-ad-b2c

我正在尝试使用邮递员从Azure B2C实例取回访问令牌。

我一直在关注如何执行此操作的Microsoft文档(https://docs.microsoft.com/en-us/azure/active-directory-b2c/access-tokens),但是在碰到/ token端点时始终出现以下错误-

{
    "error": "invalid_grant",
    "error_description": "AADB2C90205: This application does not have sufficient permissions against this web resource to perform the operation.\r\nCorrelation ID: 544ba4c7-08e3-4206-9957-3783fa0240e4\r\nTimestamp: 2020-11-06 15:29:17Z\r\n"
}

就像在文档中一样,我进行了两次网络调用,第一个是到授权端点以获取所需的代码。

enter image description here

我采用了上面生成的URL,并将其粘贴到浏览器中。这将带我到登录屏幕,并以我创建的B2C中的测试用户身份登录。这将在浏览器URL中返回代码。到目前为止,这似乎是预期的。

enter image description here

然后,我使用浏览器中的代码对/ token端点进行以下调用。提出有关“无效的grant_type”和权限不足的请求时,我总是收到在此文章开头发布的错误。应该给我一个访问令牌。

enter image description here

此问题的搜索结果使我相信,这与范围有关。

我认为,应通过阅读文档,使用应用程序注册右上方列出的应用程序ID URI声明范围。我在Auth和Token调用上使用了相同的作用域。我认为应该可以使用以下两个选项之一,但是我尝试了多种不同的版本,给出了完全相同的权限错误。

https://.onmicrosoft.com//openid https://.onmicrosoft.com//openid offline_access

我不知道在API权限页面中是否还需要执行其他操作才能使其正常工作? enter image description here

真的很感谢在这里尝试提供的任何帮助,因为我已经多次提出相同的建议了。

2 个答案:

答案 0 :(得分:0)

请求URL中提供的范围必须具有openid offline_access。您可以通过使用邮递员更新必填字段来使用以下查询

POST https://XXXX.b2clogin.com/XXXX.onmicrosoft.com/B2C_1_susisignin/oauth2/v2.0/token?
grant_type=authorization_code
&client_id=f209c17f-b0b2-4954-XXXX
&scope=https://XXXX.onmicrosoft.com/api/read openid offline_access
&redirect_uri=https://jwt.ms
&code=
&client_secret=5f4Xd34Y8XX

enter image description here

当您在openid offline_access范围内没有至少一个权限的情况下发出请求时,它将失败,并出现如下所示的特权问题。

enter image description here

Scope section的末尾看到文档时,提到如果至少授予一个许可,则调用成功。

答案 1 :(得分:0)

这是一个非常常见的错误。从提供的屏幕截图来看,您的客户端应用程序缺少 api应用程序的自定义权限。

我尝试重现您的问题: enter image description here

下一步,您只需要向客户端应用程序授予公开API权限,然后授予管理员同意enter image description here

enter image description here

请求令牌:

enter image description here

解析令牌,您将看到您的自定义权限:

enter image description here