health lnfo:J2EE应用服务器和DOMINO之间的SSO实现

来源:百度文库 编辑:偶看新闻 时间:2024/04/28 23:47:52

在门户或其他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.实现的参考代码下载:

参考代码下载