在我們的7+微服務中,我們依賴於Auth0 id_token
。當交換refresh_token
(POST myapp.auth0.com/oauth/token
)時,我只收回access_token
而不是id_token
。Auth0 - 從refresh_token獲取id_token
如何使用Auth0的API將換成id_token
?
在我們的7+微服務中,我們依賴於Auth0 id_token
。當交換refresh_token
(POST myapp.auth0.com/oauth/token
)時,我只收回access_token
而不是id_token
。Auth0 - 從refresh_token獲取id_token
如何使用Auth0的API將換成id_token
?
刷新令牌授權似乎是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)
}
}
從技術上講,refresh_token
授權類型是OAuth 2.0的一部分,id_token
是OpenID Connect的一部分,OpenID Connect是構建在OAuth 2.0之上的身份協議。
refresh_token
授予類型的OAuth 2.0允許更新訪問令牌(僅限)。由於一個很好的原因,OpenID Connect沒有定義其他行爲:id_token
被定義爲用戶認證事件的結果,因此沒有用戶交互的「認證刷新」可能不會導致新的id_token
。用戶可能同時離開,註銷或刪除了他/她的帳戶。
刷新id_token
應通過將用戶重新發送到OpenID Connect提供程序來完成,而不是通過自動使用刷新令牌來完成。
我能否獲得刷新令牌的任何演示,對角? @Hans –