2015-09-11 64 views
2

在OpenID Connect中,ID令牌是加密簽名的獨立令牌,它允許資源所有者無需致電授權服務器即可授權訪問。因此,如果授權服務器不需要驗證令牌,那麼它如何在會話管理場景中被撤銷?看起來唯一可以撤銷的是刷新令牌,在此時ID標記將過期並且用戶將不得不重新進行身份驗證。它是否正確?此外,OpenID Connect提供商/服務器在交付令牌時甚至可以存儲令牌嗎?OpenID連接會話管理 - 可否吊銷ID令牌?

回答

6

id_token由於您提到的原因而無法顯式撤銷:它是獨立的,可以在不依賴提供程序的情況下使用。但是,Web應用程序中的典型用法是在收到後使用id_token創建應用程序會話,在會話中存儲id_token的相關信息,然後丟棄id_token本身。該應用程序會話可以通過實現OpenID Connect會話管理擴展的請求終止,請參閱:https://openid.net/specs/openid-connect-session-1_0.html。在此Web SSO使用情況下,id_token生命週期將受到限制,因爲它只是一次性使用。

+0

謝謝你的迴應!只是讓我理解了整個情況,在典型的單頁應用場景中,id令牌用於檢索用戶信息並創建客戶端會話。訪問令牌是從令牌端點返回的另一個令牌,用於授權訪問受保護的API資源。它是否正確?客戶端應用程序是否需要能夠驗證ID令牌?檢查它是否過期?我假設只要發行人信任,就不需要驗證令牌。但它可能需要確保它沒有過期,並且它是否已經使用刷新令牌來新建它? –

+0

我希望在受保護的API資源的每個請求上都需要對訪問令牌和ID令牌進行相同的到期檢查。如果任何一個過期,則使用刷新令牌續訂兩者。 –

+1

我們無法使用'refresh_token'獲得新的'id_token',因爲'id_token'的語義要求用戶存在/認證,即用戶必須參與;向提供者提供新的身份驗證請求是一種方法;在Provider中,SSO會話可能仍然存在,在這種情況下,新的'id_token'是在沒有明確用戶交互的情況下生成的 –