Auth0 - 从refresh_token

时间:2017-03-05 23:21:08

标签: oauth oauth-2.0 auth0 refresh-token

在我们的7+微服务中,我们依赖于Auth0 id_token。在交换refresh_tokenPOST myapp.auth0.com/oauth/token)时,我只返回access_token而不是id_token

如何使用Auth0的API与refresh_token交换id_token

2 个答案:

答案 0 :(得分:1)

从技术上讲,refresh_token授权类型是OAuth 2.0的一部分,id_token是OpenID Connect的一部分,OpenID Connect是建立在OAuth 2.0之上的身份协议。

OAuth 2.0的refresh_token授权类型允许续订访问令牌(仅限)。 OpenID Connect没有定义除此之外的其他行为,原因很简单:id_token被定义为用户身份验证事件和"身份验证刷新"的结果。没有用户交互,因此不会产生新的id_token。用户可能在同一时间内离开,退出或删除了他/她的帐户。

刷新id_token应该通过再次将用户发送到OpenID Connect Provider来完成,而不是通过自动使用刷新令牌来完成。

答案 1 :(得分:0)

刷新令牌授权似乎是针对Auth0的新API授权功能。我正在寻找的端点是/delegation

示例Node.js代码:

const tokenClient = axios.create({
  baseURL: `https://${env.AUTH0_DOMAIN}`,
  headers: {
    'content-type': 'application/json'
  }
})

const refreshTokenClient = {
  getAccessToken: (refreshToken) => {
    // The official Node.js SDK for Auth0 does not
    // support this it would seem (it forces passing id_token)
    return tokenClient.post('/delegation', {
      client_id: env.AUTH0_CLIENT_ID,
      target: env.AUTH0_CLIENT_ID,
      grant_type: 'urn:ietf:params:oauth:grant-type:jwt-bearer',
      refresh_token: refreshToken,
      scope: 'openid',
      api_type: 'auth0'
    }).then(r => r.data)
  }
}
相关问题