azure - 无法从 Azure B2C 获取刷新令牌
问题描述
谁能告诉我从 Azure B2C 获取刷新令牌的步骤,尽管我们已经从 Azure B2C 获得了授权令牌。
我们按照以下用户流程从 Azure B2C 获取活动令牌,但我们没有收到刷新令牌
https://tenant.b2clogin.com/tenant.onmicrosoft.com/oauth2/v2.0/authorize?
client_id=feerer72-615a-4851-af2b-78786bhgg
&response_type=id_token+token
&redirect_uri=https%3A%2F%2Fjwt.ms
&scope=openid%20offline_access
&state=arbitrary_data_you_can_receive_in_the_response
&nonce=defaultNonce
&p=userflowName
描述:已授予 azure B2C 租户的所有权限,如下面的屏幕截图所示:
所以请谁能告诉我如何接收刷新令牌作为响应,以便我可以使用该刷新令牌从 Azure B2C 获取另一个活动令牌,而无需登录 Azure B2C 上的用户。
注意:检查下面给出的响应:我们正在获取活动令牌但未收到刷新令牌
{
"typ": "JWT",
"alg": "RS256",
"kid": "X5eXk4xyojNFum1kl2Ytv8dlNP4-c57dO6QGTVBwaNk"
}.{
"exp": 1582120656,
"nbf": 1582034256,
"ver": "1.0",
"iss": "https://tenant.b2clogin.com/c9fabc17-7ff9-4cdf17-b175-945gfgdf9ac/v2.0/",
"sub": "842e9ee3-28dfd02-4a29-ba95-b5228616e9fe",
"aud": "fecd3e72-615a-4851-af2b-d2b5171735erer4d",
"nonce": "defaultNonce",
"iat": 1582034256,
"auth_time": 1582034256,
"oid": "898hfhfe3-2802-4a29-ba95-b5228616e9fe",
"emails": [
"nikhil.sharma@gmail.com"
],
"tfp": "B2C_1_Sign_Up_Policy",
"c_hash": "vAb2w438XDmZpZBzEYMcZ2rA"
}
解决方案
真的很简单,只需要了解使用 refresh_token 获取 access_token 的方式。完整的流程包括三个步骤。
1) 通过将应用程序重定向到 Azure 登录屏幕,从 Azure 用户流中获取代码。这将是一个 GET 请求。
https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/{userflow}/oauth2/v2.0/authorize?
client_id=abcd3e72-615a-8745-af2b-d2b51717354d
&response_type=code
&redirect_uri=https%3A%2F%2Fjwt.ms
&response_mode=query
&scope=abcd3e72-615a-8745-af2b-d2b51717354d%20offline_access
&state=arbitrary_data_you_can_receive_in_the_response
成功登录后,Azure 使用查询字符串中的代码参数进行重定向。
2) 使用上面的代码通过下面的 POST URL 请求获取 access_token 和 refresh_token。
https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/{userflow}/oauth2/v2.0/token
3) 在 access_token 到期后,使用 refresh_token 和下面的 POST URL 来获取访问令牌和刷新令牌。
https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/{userflow}/oauth2/v2.0/token
推荐阅读
- php - 显示收到的友谊请求数量的片段
- javascript - 如何删除除第一个元素之外的所有子元素?
- react-native - 在渲染功能之外导航
- android - 在js外定义onesignal_app_id
- angular - Angular 6 编译失败属性 tz 在 Moment 类型上不存在
- reactjs - 在 React 中跟踪 SVG 图像加载
- laravel - 我可以让用户单击一个按钮然后将某些内容添加到数据库中吗
- c# - EF Core - 可能导致循环或多个级联路径
- python - 有没有一种有效的方法在两个字符串之间分割一个字符串?
- c++ - 使用openmp优化for循环的不同方法