在门户或其他J2EE项目中,经常要实现J2EE Application Server与DOMINO R6之间的的单点登录.除了采用专门的商业SSO软件外,经常需要自己实现,下面以Weblogic Server为例子说明一种简单的实现方式,对其他的J2EE Application Server应该也适用,如果是WebSphere 和Domino之间的SSO实现,也采用其他方式,具体请参考:
1.建立两个系统之间用户的对应关系
同一个用户在WebLogic系统和Domino系统的用户名/密码可能不一样,为了实现单点登录。必须在一张表或文件中保存他们的对应关系。该表的定义如下:
create table sso_info ( wls_user char(20), //在weblogic系统中的用户名 wls_pass char(10), //在weblogic系统中的密码 domino_user char(20), //在Domino系统中的用户名 domino_pass char(10) //在Domino系统中的密码 ) 如果这两个系统都采用统一的LDAP进行用户认证,那么同一个用户在这两个系统中的用户名/密码都是一样的,就无需建立这种对应关系。 在本次测试中采用DOMINO LDAP
2.从WebLogic系统登录到Domino系统实现方式
如下图:
说明: 1, 在WebLogic系统上部署一个用于进行用户登录的Servlet: WlsLogin,客户端采用浏览器访问该Servlet进行登录。WlsLogin取得客户端输入的用户名/密码并在WebLogic系统中进行登录。 2, 当客户端成功登录到WebLogic系统后,WlsLogin中通过查询上面定义的表sso_info,得到该用户在Domino系统中的用户名/密码,然后在WlsLogin中通过JAVA网络编程方式访问Domino系统的登录页面,登录Domino系统。 3, 如果登录Domino系统成功,用户不需要登录,就可以直接访问Domino系统.
用户从WebLogic系统退出处理 当用户从WebLogic系统退出时,调用一个定制的Servlet: WlsLogout。WlsLogout先把用户从WebLogic系统中退出。然后通过JAVA网络编程方式调用部署在Domino系统上的一个Servlet: DominoOut。在DominoOut中使用户从Domino系统中退出。这样用户在Weblogic,Domino两个系统可以同时登录,同时退出,保持session同步。
3.从Domino系统登录到WebLogic系统实现方式 如下图:
说明: 1, 在Domino系统上部署一个用于进行用户登录的Servlet: DominoLogIn,客户端采用浏览器访问该Servlet进行登录。DominoLogIn取得客户端输入的用户名/密码并在Domino系统中进行登录. 2, 当客户端成功登录到Domino系统后,DominoLogIn中通过查询上面定义的表sso_info,得到该用户在WebLogic系统中的用户名/密码,然后在DominoLogIn中通过JAVA网络编程方式访问Weblogic系统的登录页面。登录Weblogic系统。 3, 如果登录Weblogic系统成功,在DominoLogIn中会得到返回的http头及cookie信息。同时在WebLogic系统上也会有该用户的session信息。 4, 在DominoLogIn中把3中WebLogic返回的Cookie信息返回给客户端。 5, 客户端有了访问WebLogic系统的cookie信息。同时WebLogic系统中也有了该客户端的session信息。用户不需要登录,就可以直接访问WebLogic系统。
用户从Domino系统退出处理 当用户从Domino系统退出时,调用一个定制的Servlet: DominoLogOut。DominoLogOut先把用户从Domino系统中退出。然后通过JAVA网络编程方式调用部署在WebLogic系统上的一个Servlet: WlsOut。在WlsOut中使用户从WebLogic系统中退出。这样用户在WebLogic,Domino两个系统可以同时登录,同时退出,保持Session同步。
4.实现的参考代码下载:
参考代码下载
|