2016-11-16 83 views
0

我們公司的應用程序將具有集中身份驗證。 App 1或App 2中沒有任何身份驗證或用戶帳戶,都在Identity Server中處理。您需要公司的帳戶有應用程序1或應用程式2. enter image description hereOpenID Connect的會話ID

我覺得id_token是綽綽有餘的會話ID但是從我的理解,更是最好不要到服務器,如果可能的外暴露id_token更嚴格的安全性。我應該如何發出session_id,這種情況下會話管理的理想方式是什麼?我正在使用WSO2身份認證服務器

回答

1

會話管理,這是一個與web應用程序最常關聯的特徵,所以我會假設這就是App 1和2所具有的特徵。你會發現這篇文章(Single Sign-On for Regular Web Apps一個有趣的閱讀,尤其是部分上session management

在談到管理會話,通常有會議三層,我們需要考慮:

  • 應用程序會話
  • Auth0 (聯邦提供商)會話
  • 身份提供會議

,如果你打算擁有您的身份驗證服務器還委託認證像谷歌或Facebook的附加身份提供者這將適用於你。


就個人而言,我不會用ID令牌作爲會話標識符,而使用更短的ID,並保持會話狀態的服務器端。

但是,ID令牌旨在提供給客戶端應用程序,以向他們提供有關驗證操作的信息。在這裏,客戶端應用程序指的是應用程序的角色,而不是其部署特性,因此您可以讓客戶端應用程序僅存在於服務器環境中,或者位於最終用戶設備/計算機之外。

前面的意思是讓ID標記跨越服務器端邊界是完全可以的,並且您將它用作會話cookie值的意圖沒有問題。

請記住,Cookie和ID令牌都具有過期的概念,因此讓Cookie中的令牌可能會引起混淆。你或者需要保持同步(重複)或者忽略一個,並確保每個人都知道哪一個被忽略(從現在起三個月,每個人都可能意味着你)。

+0

讓我說我使用id_token作爲服務器邊界外的session_id,黑客可以得到該id_token並使用它來獲得對受保護資源的訪問權,這是aud field和jwt的用途嗎? –

+1

'aud'是爲了確保令牌是由您的應用程序使用而不是由可被攻擊者控制的另一個使用。如果您擁有基於會話的系統,則意味着擁有會話標識符的任何人都可以訪問關聯的資源。使用令牌作爲會話標識符或使用隨機標識符意味着同樣的事情;如果某人竊取了你的會話,那麼它可以模擬相關的用戶。 –