2017-03-05 56 views
0

在我們的7+微服務中,我們依賴於Auth0 id_token。當交換refresh_tokenPOST myapp.auth0.com/oauth/token)時,我只收回access_token而不是id_tokenAuth0 - 從refresh_token獲取id_token

如何使用Auth0的API將換成id_token

回答

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) 
    } 
} 
1

從技術上講,refresh_token授權類型是OAuth 2.0的一部分,id_token是OpenID Connect的一部分,OpenID Connect是構建在OAuth 2.0之上的身份協議。

refresh_token授予類型的O​​Auth 2.0允許更新訪問令牌(僅限)。由於一個很好的原因,OpenID Connect沒有定義其他行爲:id_token被定義爲用戶認證事件的結果,因此沒有用戶交互的「認證刷新」可能不會導致新的id_token。用戶可能同時離開,註銷或刪除了他/她的帳戶。

刷新id_token應通過將用戶重新發送到OpenID Connect提供程序來完成,而不是通過自動使用刷新令牌來完成。

+0

我能否獲得刷新令牌的任何演示,對角? @Hans –

相關問題