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