WEB开发网
开发学院数据库DB2 雇员工作空间系列: 配置和开发DB2 Content Manage... 阅读

雇员工作空间系列: 配置和开发DB2 Content Manager 8.2的单点登录portlet

 2010-05-14 15:00:25 来源:WEB开发网   
核心提示:现在,您已经完成了单点登录 portlet,雇员工作空间系列: 配置和开发DB2 Content Manager 8.2的单点登录portlet(5),您可以构建项目,将该项目导出为 WAR 文件,本文讨论了将这两种产品与单点登录功能进行集成的不同方法,并提供了关于如何配置和开发使用 LTPA 令牌的单点登录 port

现在,您已经完成了单点登录 portlet。您可以构建项目,将该项目导出为 WAR 文件,并将它部署到 Lotus Workplace 服务器上。

用单点登录增强 Document Management portlet

在测试了上面所创建的新单点登录 portlet 之后,就可以开始增强本系列第 5 部分和第 6 部分中开发的 Document Management portlet 了。

添加单点登录功能的过程包含两个步骤。首先,需要添加一个函数,用该函数来连接使用 LTPA 令牌的 Content Manager 服务器。其次,需要修改 portlet 中的代码,其中用户和密码是从凭证保险库中检索获得的,将用于连接 Content Manager 服务器。

与 TConnect.java 示例相似,Document Management portlet 也有一个实用程序类,其中包含所有的连接和断开连接的函数。这个类就是 ICMConnectDisconnect。您需要将 TConnect.java 导入 com.ibm.bsd.util 包,并向 ICMConnectDisconnect.java 文件添加下列代码:

public static DKDatastoreICM connectWithCredential(String
        userName, String ltpaToken)
 throws DKException, CMBException, Exception {
 // retrieve connection parameters from property file    
 PropertyResourceBundle bundle =
  (PropertyResourceBundle) PropertyResourceBundle.getBundle(
    BSDConstants.PROPERTY_FILE_NAME);
 String database =
  bundle.getString(BSDConstants.PROPERTY_DATABASE_NAME);
 CMBConnection connBean = new CMBConnection();
 // you need to set userid for some CM operations to work
 connBean.setUserid(userName);
 System.out.println(
  "Connecting to datastore (Database '"
    + database
    + "', LtpaToken '"
    + ltpaToken
    + "'");
 //connBean.connect();
  
 TConnect.connect(connBean, "ICM", database, ltpaToken);
 /*
  connBean.setDsType("ICM");
  connBean.connectWithCredential("database", ltpaToken, "");
 */
  
 System.out.println("OK, connected");
 DKDatastoreICM dsICM =
  (com.ibm.mm.sdk.server.DKDatastoreICM)connBean.getDatastore();
  
 System.out.println(
   "Connected to datastore (Database '"
    + dsICM.datastoreName()
    + "', LtpaToken '"
    + ltpaToken
    + "').");
 return (dsICM);
}
public static String getLtpaToken(PortletRequest request) {
 Cookie[] cookies = request.getCookies();
 String ltpaToken = null;
 if (cookies != null && cookies.length > 0) {
  for (int i = 0; i < cookies.length; i++) {
   if (cookies[i].getName().equalsIgnoreCase("LtpaToken")) {
    ltpaToken = cookies[i].getValue();
   }
  }
 }
 return ltpaToken;
}

为了定位需要进行修改的代码,可以搜索 getPassword4CMFromCredential,并用下列代码替换相关的代码:

...
//get the portal user id from the portal request object
String userId = request.getUser().getUserID() ;
//extract the password of the portal user from the portal credentials
//String password =
//PortletCredential4ICMUtil.getPassword4CMFromCredential(request,
//PortletCredential4ICMUtil.getVault(getPortletConfig().getContext()),
//userId);
String password = "";
    
//connect using the LTPA token
String ltpaToken = ICMConnectDisconnect.getLtpaToken(request);
DKDatastoreICM store =
 ICMConnectDisconnect.connectWithCredential(userId, ltpaToken);
// DKDatastoreICM store =
//  ICMConnectDisconnect.connect(userId,password) ;
sessionBean.setDataStore(store) ;
...

现在,您应该可以使用 Document Management portlet 且无需维护用户名和密码了。

结束语

对于客户来说,Content Manager 服务器和 portlet 之间的无缝集成是一项重要功能。本文讨论了将这两种产品与单点登录功能进行集成的不同方法,并提供了关于如何配置和开发使用 LTPA 令牌的单点登录 portlet 的详细说明。本文还提供了关于修改 Document Management portlet 来使用 LTPA 令牌方法的指南。

上一页  1 2 3 4 5 

Tags:雇员 工作 空间

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接