單點登錄深入解析

1.什麼是單點登錄

    如何只需輸入一個平臺上的賬號密碼,登陸後再進入其他平臺不用再次輸入賬號密碼也能自動登陸。這就是單點登錄。

2.實現單點登錄的三種方式:

   2.1 使用cookie,記錄登錄的數據,並且進行加密,通常我們用到的sha加密,不可逆的,密文泄露也無法還原過來,還有就是我們的MD5加密。但是cookie 本身不夠安全,存放在瀏覽器這一端;第二是無法跨域訪問使用同一個cookie ,需要設置頂級域名,纔能有效。 第三,是各應用系統使用的技術(至少是web服務器)要相同,不然cookie的key值(tomcat爲JSESSIONID)不同,第四,無法維持會話,共享cookie的方式是無法實現跨語言技術平臺登錄的,比如java、php、.net系統之間;

  2.2 SSO認證授權登錄

上一種方法有很大的侷限性,如果跨域名,就實現不了,這裏我們可以藉助第三方授權來實現。要實現多個平臺單點登錄,前提是多個平臺必須要有一個唯一的賬號,如手機號,郵箱,或用戶名,這樣纔可以判斷出是哪個用戶。

        SSO認證授權登錄的具體實現思路是這樣的:假如公司有兩個不同域名或IP下的管理網站,a.com,b.com,我們想要輸入用戶名和密碼登錄a.com, 即可自動登錄b.com,怎麼實現呢?

        登錄a.com後會在a平臺產生會話信息,如果我們登錄b.com,怎麼判斷該用戶已經登錄a平臺了,然後自己登錄?這裏我們需要藉助第三方平臺來做授權驗證,即c.com,該授權中心維護一套共有的賬號和密碼,當用戶訪問 a.com 後,我們會跳轉到 c.com,並帶上a.com 這個來源訪問地址,在c.com 中判斷是否有登錄,如果未登錄,則給出登錄界面,登錄成功後,則產生會話信息,同時生成一個授權Token,保存在c.com cookie 中,然後返回給原地址,如果已經登錄(即已經授權過了),則拿到cookie中保存的Token信息然後回跳到原來的訪問地址,a.com 判斷有Token信息,則拿着這個Token發送http請求到c.com,判斷該Token是否有效,如果有效,則返回給用戶信息,然後a.com拿到信息後,自動登錄a.com。

        當訪問 b.com 時,也會去 c.com 中判斷是否已經授權過了,因爲a.com 已經授過權了,則會給b.com 返回授權Token,然後b.com 判斷該Token是否有效,如果有效,則會返回給用戶信息,b.com 自動登錄,這就是單點登錄的一個簡單的流程。

2.3.通過重定向實現

         最後一種介紹的方式,是通過父應用和子應用來回重定向中進行通信,實現信息的安全傳遞。父應用提供一個GET方式的登錄接口,用戶通過子應用重定向連接的方式訪問這個接口,如果用戶還沒有登錄,則返回一個的登錄頁面,用戶輸入賬號密碼進行登錄。如果用戶已經登錄了,則生成加密的Token,並且重定向到子應用提供的驗證Token的接口,通過解密和校驗之後,子應用登錄當前用戶。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章