SSO 方案演進

2022-10-11 02:33:12 字數 1771 閱讀 5018

隨著業務與技術的發展,現今比以往任何時候都更需要單點登入 sso 身份驗證。

現在幾乎每個**都需要某種形式的身份驗證才能訪問其功能和內容。

隨著**和服務數量的增加,集中登入系統已成為一種必要。

在本文中,我們將研究 sso 身份驗證的方案演進。

事實上,你可能還希望已經在** a 登入的使用者自動完成** b 的登入。

問題的解決方案顯然是實現跨不同域之間共享會話資訊。但是,由於安全原因,瀏覽器會強制執行同源策略 - same origin policy。

sso 其實就是要以某種方式解決不同域之間共享會話資訊。

一、同源解決方案

1. 使用者瀏覽** a

2. ** a 發現無 *.domain.com 的 cookies,重定向到認證中心

3. 認證中心要求使用者使用賬號密碼登入

4. 認證中心儲存 cookies 到 *.domain.com

5. 重定向返回** a

6. ** a 讀取 *.domain.com 下的 cookies 完成校驗,展示**內容

7. 使用者瀏覽** b

8. ** b 讀取 *.domain.com 下的 cookies 完成校驗,展示**內容

二、非同源解決方案

同源的解決方案可以滿足大部分場景,但是針對一些多產品的場景,比如,阿里巴巴有天貓和**兩個產品,同源解決方案顯然不能滿足需求。

不同的 sso 協議以不同的方式共享會話資訊,但基本概念是相同的:有乙個認證中心,執行身份驗證,然後以某種方式與其他域共享會話資訊。

其中一種方式是使用 jwt - json web token,認證中心使用 jwe - json web encryption 對使用者資訊進行加密,生成 jwt。

然後通過重定向的方式,把 token 傳回原始站點,token 包含需要驗證使用者所需的所有資訊。

由於 token 是使用 jwt 加密的,除了認證中心外無法以任何方式修改它,具體流程如下:

1. 使用者瀏覽** a

2. ** a 發現無 domain1.com 的 cookies,重定向到認證中心

3. 認證中心要求使用者使用賬號密碼登入

4. 認證中心儲存 cookies 到 auth.com

5. 重定向返回** a 並在 url 攜帶驗證使用者資訊的 token

6. ** a 校驗 token 完成驗證

7. ** a 儲存 cookies 到 domain1.com,供後續驗證使用,並顯示**內容

8. 使用者瀏覽** b

9. ** b 發現無 domain2.com 的 cookies,重定向到認證中心

10. 認證中心發現有 auth.com 的 cookies,對 cookies 進行校驗

11. 重定向返回** b 並在 url 攜帶驗證使用者資訊的 token

12. ** b 校驗 token 完成驗證

13. ** b 儲存 cookies 到 domain2.com,供後續驗證使用,並顯示**內容

簡單的SSO方案 COOKIE實現

sso是單點登入的意思.我相信各位都應該知道使用sso有什麼好處.那廢話就不多說了.直接來說一下我的思路吧.在第三步時,即使用動態追加指令碼塊,或使用img物件來實現向另乙個 請求,使該 有機會能寫入自己的cookie.指令碼塊的話,如下 如使用img 則更簡單 在a.aspx中我們則可以寫回相應的...

簡單的SSO方案 COOKIE實現

sso是單點登入的意思.我相信各位都應該知道使用sso有什麼好處.那廢話就不多說了.直接來說一下我的思路吧.在第三步時,即使用動態追加指令碼塊,或使用img物件來實現向另乙個 請求,使該 有機會能寫入自己的cookie.指令碼塊的話,如下 如使用img 則更簡單 在a.aspx中我們則可以寫回相應的...

php 實現簡單 sso 初步方案

首先,宣告一點,sso和任何語言沒有關係,因為我只懂php,為了非php程式設計師誤入,所以就起了這樣的標題。我也是這幾天才接觸這個sso的,sso就是要解決同步登陸 退出的問題。如果有什麼錯誤的地方,請指出,謝謝。假設當前情況有passport系統 應用blog和應用album,實現應用之間同步登...