我为Azure B2C制定了自定义策略,添加了jwt.ms作为回复URL,并且一切似乎都正常进行。登录时,我被重定向到显示令牌及其内容的jwt.ms。但是,当我尝试将有角度的前端链接到此自定义策略时,它似乎不起作用。需要响应类型jsfContainer-2.3
,但是当我使用此响应类型时,出现错误“ 此应用程序对此Web资源没有足够的权限来执行操作。”
当我使用响应类型id_token token
时,它似乎可以正常工作,并且收到JWT令牌的答复。
我认为问题可能出在应用程序的 Implicit Grant 设置中,因此我尝试为所有启用访问令牌和 ID令牌应用程序,但这没有帮助。
请求如下:
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或前端应用程序中的配置引起的问题。
答案 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
,如下所示:
创建API访问权限
为避免上述错误Add
API访问。为此,请转到您的应用程序,选择API access
,然后您会在顶部看到一个Add
按钮。单击,右侧的API access
窗口将打开,只需单击Ok
。请参见下面的屏幕截图:
成功完成API Access
之后,如下所示
注意:希望它会在您尝试发送请求时解决您的错误。
B2C id_token和访问令牌
针对Id_token
遵循以下步骤
ID令牌访问过程
client_id = YourApplicationId
&redirect_uri =您对应用程序的答复
&scope = openid
&response_type = id_token
下面看一下Id_token
:
注意:只需填写以上格式,然后将其粘贴到您的浏览器中即可,之间没有空格。如果正确,则登录页面将会是 提示。登录后,您将在浏览器中获得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
,请参见以下屏幕截图:
要获取访问令牌,请点击Get New Access Token
,然后在窗口中以上述格式填写后提示您。
点击Request Token
按钮后,成功登录后将提示您登录窗口,您将得到access_token
的响应。如下所示:
注意:在B2C中,不支持在单个请求中将“ Id-Token”和“ access_token”一起获得。你必须实现它 单独的请求。有关更多详细信息,请参阅here
如果您仍有任何问题,请随时在此处发表评论。谢谢,祝您编程愉快!