單點登錄的過程:認證系統根據用戶在瀏覽器中輸入的登錄信息,進行身份認證,如果認證通過,返回給瀏覽器一個證明[認證系統_ticket];這時再通過瀏覽器將[認證系統_ticket]發送到到應用系統1的設置cookie的url,應用系統1返回給瀏覽器一個證明[應用系統1_ticket],這時再將請求重定向到最初訪問的頁面,以后應用系統1就可以自動登錄了。現在用戶訪問了應用系統2,由于應用系統2沒有生成過cookie(但是用戶已經在應用系統1登錄過一次了),將請求重定向到認證系統;認證系統檢測到已經生成過[認證系統_ticket]了,認證通過;再通過瀏覽器將[認證系統_ticket]發送到到應用系統2的設置cookie的url,應用系統2返回給瀏覽器一個證明[應用系統2_ticket],這時再將請求重定向到最初訪問的頁面。應用系統3也同樣原理,我們等于將ticket做了一次同步,保證了每個應用系統都有一份認證系統產生的ticket。剩余的ticket驗證過程和上篇文章一樣了。
修改hosts文件,映射3個域名:
需要修改下WebSSODemo/WEB-INF/web.xml文件。關鍵配置信息如下:?
SSO使用
首先輸入第一個應用系統的訪問地址,http://web1.com:8080/WebSSODemo/index.jsp,如果是第一次訪問的話,會自動跳轉到登錄頁,如下圖:
系統中內置了3個用戶,張三、李四、王五,用戶名和密碼皆為拼音全拼,輸入zhangsan/zhangsan登錄后,會自動跳轉到我們剛才訪問的頁面,頁面中顯示了登錄的用戶名及歡迎信息,如下圖:
這時,我們再輸入第二個應用系統的訪問地址,http://web2.com:8080/WebSSODemo/index.jsp,我們發現,沒有進行第二次登錄,同樣頁面中顯示了登錄的用戶名及歡迎信息,如下圖:我們接著點擊Logout注銷用戶,頁面跳轉到了登錄頁面,這時我們再回頭訪問第一個應用系統的頁面,發現同樣跳轉到了登錄頁面。