在門戶或其他J2EE項(xiàng)目中,經(jīng)常要實(shí)現(xiàn)J2EE Application Server與DOMINO R6之間的的單點(diǎn)登錄.除了采用專門的商業(yè)SSO軟件外,經(jīng)常需要自己實(shí)現(xiàn),下面以Weblogic Server為例子說(shuō)明一種簡(jiǎn)單的實(shí)現(xiàn)方式,對(duì)其他的J2EE Application Server應(yīng)該也適用,如果是WebSphere 和Domino之間的SSO實(shí)現(xiàn),也采用其他方式,具體請(qǐng)參考:
1.建立兩個(gè)系統(tǒng)之間用戶的對(duì)應(yīng)關(guān)系
同一個(gè)用戶在WebLogic系統(tǒng)和Domino系統(tǒng)的用戶名/密碼可能不一樣,為了實(shí)現(xiàn)單點(diǎn)登錄。必須在一張表或文件中保存他們的對(duì)應(yīng)關(guān)系。該表的定義如下:
create table sso_info
(
wls_user char(20), //在weblogic系統(tǒng)中的用戶名
wls_pass char(10), //在weblogic系統(tǒng)中的密碼
domino_user char(20), //在Domino系統(tǒng)中的用戶名
domino_pass char(10) //在Domino系統(tǒng)中的密碼
)
如果這兩個(gè)系統(tǒng)都采用統(tǒng)一的LDAP進(jìn)行用戶認(rèn)證,那么同一個(gè)用戶在這兩個(gè)系統(tǒng)中的用戶名/密碼都是一樣的,就無(wú)需建立這種對(duì)應(yīng)關(guān)系。
在本次測(cè)試中采用DOMINO LDAP
2.從WebLogic系統(tǒng)登錄到Domino系統(tǒng)實(shí)現(xiàn)方式
如下圖:
說(shuō)明:
1, 在WebLogic系統(tǒng)上部署一個(gè)用于進(jìn)行用戶登錄的Servlet: WlsLogin,客戶端采用瀏覽器訪問該Servlet進(jìn)行登錄。WlsLogin取得客戶端輸入的用戶名/密碼并在WebLogic系統(tǒng)中進(jìn)行登錄。
2, 當(dāng)客戶端成功登錄到WebLogic系統(tǒng)后,WlsLogin中通過查詢上面定義的表sso_info,得到該用戶在Domino系統(tǒng)中的用戶名/密碼,然后在WlsLogin中通過JAVA網(wǎng)絡(luò)編程方式訪問Domino系統(tǒng)的登錄頁(yè)面,登錄Domino系統(tǒng)。
3, 如果登錄Domino系統(tǒng)成功,用戶不需要登錄,就可以直接訪問Domino系統(tǒng).
用戶從WebLogic系統(tǒng)退出處理
當(dāng)用戶從WebLogic系統(tǒng)退出時(shí),調(diào)用一個(gè)定制的Servlet: WlsLogout。WlsLogout先把用戶從WebLogic系統(tǒng)中退出。然后通過JAVA網(wǎng)絡(luò)編程方式調(diào)用部署在Domino系統(tǒng)上的一個(gè)Servlet: DominoOut。在DominoOut中使用戶從Domino系統(tǒng)中退出。這樣用戶在Weblogic,Domino兩個(gè)系統(tǒng)可以同時(shí)登錄,同時(shí)退出,保持session同步。
3.從Domino系統(tǒng)登錄到WebLogic系統(tǒng)實(shí)現(xiàn)方式
如下圖:
說(shuō)明:
1, 在Domino系統(tǒng)上部署一個(gè)用于進(jìn)行用戶登錄的Servlet: DominoLogIn,客戶端采用瀏覽器訪問該Servlet進(jìn)行登錄。DominoLogIn取得客戶端輸入的用戶名/密碼并在Domino系統(tǒng)中進(jìn)行登錄.
2, 當(dāng)客戶端成功登錄到Domino系統(tǒng)后,DominoLogIn中通過查詢上面定義的表sso_info,得到該用戶在WebLogic系統(tǒng)中的用戶名/密碼,然后在DominoLogIn中通過JAVA網(wǎng)絡(luò)編程方式訪問Weblogic系統(tǒng)的登錄頁(yè)面。登錄Weblogic系統(tǒng)。
3, 如果登錄Weblogic系統(tǒng)成功,在DominoLogIn中會(huì)得到返回的http頭及cookie信息。同時(shí)在WebLogic系統(tǒng)上也會(huì)有該用戶的session信息。
4, 在DominoLogIn中把3中WebLogic返回的Cookie信息返回給客戶端。
5, 客戶端有了訪問WebLogic系統(tǒng)的cookie信息。同時(shí)WebLogic系統(tǒng)中也有了該客戶端的session信息。用戶不需要登錄,就可以直接訪問WebLogic系統(tǒng)。
用戶從Domino系統(tǒng)退出處理
當(dāng)用戶從Domino系統(tǒng)退出時(shí),調(diào)用一個(gè)定制的Servlet: DominoLogOut。DominoLogOut先把用戶從Domino系統(tǒng)中退出。然后通過JAVA網(wǎng)絡(luò)編程方式調(diào)用部署在WebLogic系統(tǒng)上的一個(gè)Servlet: WlsOut。在WlsOut中使用戶從WebLogic系統(tǒng)中退出。這樣用戶在WebLogic,Domino兩個(gè)系統(tǒng)可以同時(shí)登錄,同時(shí)退出,保持Session同步。
4.實(shí)現(xiàn)的參考代碼下載:
參考代碼下載聯(lián)系客服