Auth0 - get id_token from refresh_token



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

如何将refresh_token与Auth0的API交换为id_token

从技术上讲,refresh_token授予类型是OAuth 2.0的一部分,id_token是OpenID Connect的一部分,这是构建在OAuth 2.0顶部的身份协议。

refresh_token授予类型OAuth 2.0允许更新访问令牌(仅)。OpenID Connect并没有定义其他行为,这是有充分理由的:id_token的定义是用户身份验证事件的结果,而没有用户互动的"身份验证刷新"不能导致新的id_token。用户可能已经离开,登录或他/她的帐户在此期间已删除。

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

看起来,刷新令牌授予是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)
  }
}

相关内容

  • 没有找到相关文章

最新更新