Oauth Auth0-从刷新令牌获取id\u令牌

Oauth Auth0-从刷新令牌获取id\u令牌,oauth,oauth-2.0,auth0,refresh-token,Oauth,Oauth 2.0,Auth0,Refresh Token,在我们的7+微服务中,我们依赖Auth0id\u令牌。交换refresh\u令牌时(POST myapp.auth0.com/oauth/token),我只得到access\u令牌,而不是id\u令牌 如何使用Auth0的API将refresh\u令牌交换为id\u令牌。从技术上讲,refresh\u令牌授权类型是OAuth 2.0的一部分,id\u令牌是OpenID Connect的一部分,OpenID Connect是构建在OAuth 2.0之上的身份协议 OAuth 2.0的refresh

在我们的7+微服务中,我们依赖Auth0
id\u令牌
。交换
refresh\u令牌时(
POST myapp.auth0.com/oauth/token
),我只得到
access\u令牌
,而不是
id\u令牌


如何使用Auth0的API将
refresh\u令牌
交换为
id\u令牌

从技术上讲,
refresh\u令牌
授权类型是OAuth 2.0的一部分,
id\u令牌
是OpenID Connect的一部分,OpenID Connect是构建在OAuth 2.0之上的身份协议

OAuth 2.0的
refresh_令牌
grant类型允许续订访问令牌(仅限)。OpenID Connect没有定义除此之外的其他行为,原因很好:
id\u令牌
被定义为用户身份验证事件的结果,因此没有用户交互的“身份验证刷新”不会产生新的
id\u令牌
。同时,用户可能已离开、注销或删除其帐户


刷新
id\u令牌
应该通过再次将用户发送到OpenID连接提供程序来完成,而不是自动使用刷新令牌。

刷新令牌授权似乎是针对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)
  }
}

我可以得到刷新令牌的任何演示吗@汉斯