在門(mén)戶(hù)或其他J2EE項目中,經(jīng)常要實(shí)現J2EE Application Server與DOMINO R6之間的的單點(diǎn)登錄.除了采用專(zhuān)門(mén)的商業(yè)SSO軟件外,經(jīng)常需要自己實(shí)現,下面以Weblogic Server為例子說(shuō)明一種簡(jiǎn)單的實(shí)現方式,對其他的J2EE Application Server應該也適用,如果是WebSphere 和Domino之間的SSO實(shí)現,也采用其他方式,具體請參考:
1.建立兩個(gè)系統之間用戶(hù)的對應關(guān)系
同一個(gè)用戶(hù)在WebLogic系統和Domino系統的用戶(hù)名/密碼可能不一樣,為了實(shí)現單點(diǎn)登錄。必須在一張表或文件中保存他們的對應關(guān)系。該表的定義如下:
create table sso_info
(
wls_user char(20), //在weblogic系統中的用戶(hù)名
wls_pass char(10), //在weblogic系統中的密碼
domino_user char(20), //在Domino系統中的用戶(hù)名
domino_pass char(10) //在Domino系統中的密碼
)
如果這兩個(gè)系統都采用統一的LDAP進(jìn)行用戶(hù)認證,那么同一個(gè)用戶(hù)在這兩個(gè)系統中的用戶(hù)名/密碼都是一樣的,就無(wú)需建立這種對應關(guān)系。
在本次測試中采用DOMINO LDAP
2.從WebLogic系統登錄到Domino系統實(shí)現方式
如下圖:

說(shuō)明:
1, 在WebLogic系統上部署一個(gè)用于進(jìn)行用戶(hù)登錄的Servlet: WlsLogin,客戶(hù)端采用瀏覽器訪(fǎng)問(wèn)該Servlet進(jìn)行登錄。WlsLogin取得客戶(hù)端輸入的用戶(hù)名/密碼并在WebLogic系統中進(jìn)行登錄。
2, 當客戶(hù)端成功登錄到WebLogic系統后,WlsLogin中通過(guò)查詢(xún)上面定義的表sso_info,得到該用戶(hù)在Domino系統中的用戶(hù)名/密碼,然后在WlsLogin中通過(guò)JAVA網(wǎng)絡(luò )編程方式訪(fǎng)問(wèn)Domino系統的登錄頁(yè)面,登錄Domino系統。
3, 如果登錄Domino系統成功,用戶(hù)不需要登錄,就可以直接訪(fǎng)問(wèn)Domino系統.
用戶(hù)從WebLogic系統退出處理
當用戶(hù)從WebLogic系統退出時(shí),調用一個(gè)定制的Servlet: WlsLogout。WlsLogout先把用戶(hù)從WebLogic系統中退出。然后通過(guò)JAVA網(wǎng)絡(luò )編程方式調用部署在Domino系統上的一個(gè)Servlet: DominoOut。在DominoOut中使用戶(hù)從Domino系統中退出。這樣用戶(hù)在Weblogic,Domino兩個(gè)系統可以同時(shí)登錄,同時(shí)退出,保持session同步。
3.從Domino系統登錄到WebLogic系統實(shí)現方式
如下圖:

說(shuō)明:
1, 在Domino系統上部署一個(gè)用于進(jìn)行用戶(hù)登錄的Servlet: DominoLogIn,客戶(hù)端采用瀏覽器訪(fǎng)問(wèn)該Servlet進(jìn)行登錄。DominoLogIn取得客戶(hù)端輸入的用戶(hù)名/密碼并在Domino系統中進(jìn)行登錄.
2, 當客戶(hù)端成功登錄到Domino系統后,DominoLogIn中通過(guò)查詢(xún)上面定義的表sso_info,得到該用戶(hù)在WebLogic系統中的用戶(hù)名/密碼,然后在DominoLogIn中通過(guò)JAVA網(wǎng)絡(luò )編程方式訪(fǎng)問(wèn)Weblogic系統的登錄頁(yè)面。登錄Weblogic系統。
3, 如果登錄Weblogic系統成功,在DominoLogIn中會(huì )得到返回的http頭及cookie信息。同時(shí)在WebLogic系統上也會(huì )有該用戶(hù)的session信息。
4, 在DominoLogIn中把3中WebLogic返回的Cookie信息返回給客戶(hù)端。
5, 客戶(hù)端有了訪(fǎng)問(wèn)WebLogic系統的cookie信息。同時(shí)WebLogic系統中也有了該客戶(hù)端的session信息。用戶(hù)不需要登錄,就可以直接訪(fǎng)問(wèn)WebLogic系統。
用戶(hù)從Domino系統退出處理
當用戶(hù)從Domino系統退出時(shí),調用一個(gè)定制的Servlet: DominoLogOut。DominoLogOut先把用戶(hù)從Domino系統中退出。然后通過(guò)JAVA網(wǎng)絡(luò )編程方式調用部署在WebLogic系統上的一個(gè)Servlet: WlsOut。在WlsOut中使用戶(hù)從WebLogic系統中退出。這樣用戶(hù)在WebLogic,Domino兩個(gè)系統可以同時(shí)登錄,同時(shí)退出,保持Session同步。
4.實(shí)現的參考代碼下載:
參考代碼下載聯(lián)系客服