【问题标题】:Unable to get Refresh token from Azure B2C无法从 Azure B2C 获取刷新令牌
【发布时间】:2020-02-19 09:01:57
【问题描述】:

谁能告诉我从 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 上的用户。

注意: 检查下面给出的响应: 我们正在获取 Active Token 但没有收到 Refresh Token

{
  "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"
}

【问题讨论】:

    标签: azure azure-cosmosdb


    【解决方案1】:

    其实很简单,只需要了解通过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
    

    【讨论】:

      【解决方案2】:

      尝试使用以下端点发出相同的请求,并检查您是否在响应中获得刷新令牌:

      https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/oauth2/v2.0/token

      如果没有,那么您的 AD B2C 实例可能存在一些错误配置。

      【讨论】:

        猜你喜欢
        • 2018-01-08
        • 2018-08-14
        • 1970-01-01
        • 2022-12-14
        • 2018-01-21
        • 2018-09-19
        • 2019-08-24
        • 2021-07-04
        • 1970-01-01
        相关资源
        最近更新 更多