访问令牌无法使用Azure AD自定义策略

时间:2019-05-08 14:12:20

标签: azure azure-ad-b2c

我为Azure B2C制定了自定义策略,添加了jwt.ms作为回复URL,并且一切似乎都正常进行。登录时,我被重定向到显示令牌及其内容的jwt.ms。但是,当我尝试将有角度的前端链接到此自定义策略时,它似乎不起作用。需要响应类型jsfContainer-2.3,但是当我使用此响应类型时,出现错误“ 此应用程序对此Web资源没有足够的权限来执行操作。

当我使用响应类型id_token token时,它似乎可以正常工作,并且收到JWT令牌的答复。

我认为问题可能出在应用程序的 Implicit Grant 设置中,因此我尝试为所有启用访问令牌 ID令牌应用程序,但这没有帮助。

Implicit grant settings

请求如下:

id_token

因此,如果替换字符,它看起来像这样:

https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/oauth2/v2.0/authorize
?p=b2c_1a_signup_signin&client_id={client_id}
&redirect_uri=http%3A%2F%2Flocalhost%3A4200%2F&response_type=id_token%20token
&scope=openid%20https%3A%2F%2F{tenant}.onmicrosoft.com%2Fapi%2Fuser_impersonation
&nonce={nonce}
&state={state}

我希望登录流程同时返回JWT ID令牌和访问令牌。

编辑: 我使用标准的Signupsignin用户流程创建了一个全新的B2C租户,但仍然遇到相同的问题。因此,我得出结论,这不是自定义策略问题,而是由Azure或前端应用程序中的配置引起的问题。

1 个答案:

答案 0 :(得分:0)

经过大量实验,我知道了您的问题。我想您尝试的格式不正确。甚至我都不知道您要参考哪个文件。好,第一个问题是...

您遇到此错误"This application does not have sufficient permissions against this web resource to perform the operation"

原因

您尚未在Azure门户上的目标应用程序中设置API access。为此,您需要在应用程序中添加API access

假设您的B2C租户应用程序中有两个Published scopes,如下所示:

enter image description here

创建API访问权限

为避免上述错误Add API访问。为此,请转到您的应用程序,选择API access,然后您会在顶部看到一个Add按钮。单击,右侧的API access窗口将打开,只需单击Ok。请参见下面的屏幕截图:

enter image description here

成功完成API Access之后,如下所示

enter image description here

  

注意:希望它会在您尝试发送请求时解决您的错误。

B2C id_token和访问令牌

针对Id_token遵循以下步骤

ID令牌访问过程

  

https://YourB2CTenant.b2clogin.com/tfp/YourB2CTenant.onmicrosoft.com/YourPolicy/oauth2/v2.0/authorize

     

client_id = YourApplicationId

     

&redirect_uri =您对应用程序的答复

     

&scope = openid

     

&response_type = id_token

下面看一下Id_token

enter image description here

  

注意:只需填写以上格式,然后将其粘贴到您的浏览器中即可,之间没有空格。如果正确,则登录页面将会是   提示。登录后,您将在浏览器中获得id_token。

B2C访问令牌

遵循POSTMAN中的以下格式:

  

赠款类型:授权码

     

回调URL:您的答复URL

     

AuthURL:https://YourTenant.b2clogin.com/YourTenant.onmicrosoft.com/YourFlow/PolicyName/oauth2/v2.0/authorize

     

访问令牌URL:   https://YourTenant.b2clogin.com/YourTenant.onmicrosoft.com/oauth2/v2.0/token?p=YourFlow/PolicyName

     

客户ID:您的应用ID

     

客户密码=应用密钥

     

范围=您的任何Published scopes

邮递员请求流程

转到邮递员,然后单击Authorization标签,然后选择type作为OAuth 2.0,请参见以下屏幕截图:

enter image description here

要获取访问令牌,请点击Get New Access Token,然后在窗口中以上述格式填写后提示您。

enter image description here

enter image description here

点击Request Token按钮后,成功登录后将提示您登录窗口,您将得到access_token的响应。如下所示:

enter image description here

  

注意:在B2C中,不支持在单个请求中将“ Id-Token”和“ access_token”一起获得。你必须实现它   单独的请求。有关更多详细信息,请参阅here

如果您仍有任何问题,请随时在此处发表评论。谢谢,祝您编程愉快!