偷懶小工具 - SSO單點登錄通用類(可跨域)

寫在前面的話

上次發(fā)布過一篇同樣標題的文章。但是因為跨域方面做得不太理想。我進行了修改,并重新分享給大家。

如果這篇文章對您有所幫助,請您點擊一下推薦。以便有動力分享出更多的“偷懶小工具”

目的 

目的很明確,就是搭建單點登錄的幫助類,并且是一貫的極簡風格(調用方法保持5行以內)。

并且與其他類庫,關聯(lián)性降低。所以,不使用WebAPI或者WebService等。

思路

因為上次有朋友說,光看見一堆代碼,看不見具體思路。所以,這次分享,我把思路先寫出來。

懶得看實現(xiàn)代碼的朋友,可直接查看“思路”這個子標題。

同時如果有好的想法,請修改后在github上推給我。Talk is cheap,Show me the code

思路

同域

同域需要考慮的問題比較少。只需要考慮,MVC和WebForm的Request如何獲取即可。

實現(xiàn)流程圖如下

1. 因為是使用同樣的Cookie所以名稱和加密方式必須一致。

2. 需要設置登錄成功后,回跳的網(wǎng)址。因為Forms身份認證的ReturnURL不能獲得請求原網(wǎng)址。

3. 剩下的就如圖所示了。不明白的可以追問,我就不細說了。

跨域

跨域除了需要考慮同域的問題外,還需要考慮狀態(tài)共享。因為同源策略問題,故此使用JSONP。

1. 因為不是Cookie共享,所以只需要設置相同的加密方法即可。

2. 需要在認證網(wǎng)站,添加可登錄的其他網(wǎng)站集合,使用逗號分隔。

3. 需要在其他網(wǎng)站,創(chuàng)建一個Login頁面并調用幫助類的驗證方法。配置認證網(wǎng)站URL。

4. 當認證網(wǎng)站登錄成功后,會根據(jù)配置的其他網(wǎng)站,給他們發(fā)送JSONP請求,讓他們自動登錄。

5. 注銷同理。JSONP請求方式,可參考這篇文章:jsonp詳解。使用的就是添加js標簽的方式。

至此,思路說明結束。不明白的可以追問。

網(wǎng)友評論