單點登錄方案不同於一個普通站點,它的部署比較繁瑣:涉及到好幾個站點,要改host、安裝證書、配置HTTPS。
看到的不少這方面示例都是基於HTTP的,不認同這種簡化:
1. 它體現不出混合HTTP/HTTPS時,單點注銷要注意處理的問題;
2. 做單點登錄一定要有絕不能走HTTP傳遞用戶登錄信息的基本安全意識。自己“加密”用戶登錄信息之類的方案,大都是不堪一擊的;
3. 我在 《看完48秒動畫,讓你不敢再登錄HTTP網站(附完整示例代碼)》這篇給了一個比較有沖擊力的HTTP會話劫持示例。
為了讓大家可以快速安裝體驗,專門開發了一個一鍵部署運行的小程序。大家在http://file.baibaomen.com/sso/BaibaomenSsoLesson.zip下載解壓完整示例壓縮包到任意盤根目錄,運行其中的 “一鍵配置運行.exe”,即會自動完成所有相關部署配置工作,並打開瀏覽器訪問相應站點。測試賬號是baibaomen,密碼123456。
注意:因為該程序運行涉及修改host、安裝證書等操作,可能出現安全警告甚至誤刪。可以自行單獨編譯其中OneKeyRunner工程源碼,會自動重新生成本exe,此時不會再告警,執行即可。
各位如果有github賬號,可以watch本項目,跟進最新源碼:https://github.com/baibaomen/BaibaomenSsoLesson。
我本地的測試環境是Windows10,IIS 10,.NET4.6。最低配置環境要求IIS7,.NET4.6。

單點注銷已在代碼中實現。先不在本文着重講解了,有興趣的同學請閱讀代碼,疑問在評論中交流。如果大家都比較關心該業務,本系列后繼文章會考慮做個專題。
單點登錄是一個涉及技術面非常廣泛的領域。本系列第二篇和本文代碼所提供的方案,屬於一類最基本也最標准的跨域Web單點登錄方案。
在具體的SSO實施中,該類方案有兩個明顯的短板:
- 只涵蓋了Web應用的單點登錄場景。企業的很多客戶端程序、移動端程序也有單點登錄需求,比如SAP、Lotus或者企業自身業務應用。像本系列第一篇演示的 VPN、QQ客戶端程序單點登錄 就是非Web的單點登錄場景。
- 要求被集成的子站點做改造。子站必須理解支持本SSO方案的接口和協議。這個對於非常多實際的SSO實施場景來說難以做到,因為大量要集成的站點都是已經上線運行了很久的,甚至都已經找不到對應維護人員的系統,改造風險太大。本系列第一篇演示的 零改造實現百度、CSDN單點登錄 就是此例,SSO實施方是無法改造待集成站點的。
網上的單點登錄教程和介紹,大部分是止於該類基本的標准方案。很多標准化的產品方案,像IdentityServer,也都屬於該范疇。
對該類方案的充分理解,是實施SSO的基本功。在此基礎上,后繼文章會結合我的顧問實施經驗,和大家探討如何演化變通,實現真實場景下的各種復雜單點登錄需求。
本文主要作為問題回復貼。執行中有問題的,請在本文回復交流。
希望成功運行的童鞋也積極回復反饋,看到你們有所收獲是我最大的動力:)
本文原文地址:http://www.cnblogs.com/baibaomen/p/sso-full-code.html 。轉載請注明。
本系列各篇鏈接:
單點登錄-SSO:概述與示例 http://www.cnblogs.com/baibaomen/p/sso.html
單點登錄-SSO:圖示和講解 http://www.cnblogs.com/baibaomen/p/sso-sequence-chart.html
單點登錄-SSO:一鍵運行的完整代碼 http://www.cnblogs.com/baibaomen/p/sso-full-code.html
本作品采用知識共享署名-非商業性使用-相同方式共享 2.5 中國大陸許可協議進行許可。
我的博客歡迎復制共享,但在同時,請保留原文地址以及我的署名權百寶門-SSO顧問,並且,不得用於商業用途。
如您有任何疑問或者授權方面的協商,請給我郵件。
博客園專欄:
百寶門-SSO顧問
