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

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

 2008-10-15 16:33:07 来源:WEB开发网   
核心提示: 与 TConnect.java 示例相似,Document Management portlet 也有一个实用程序类,雇员工作空间系列: 配置和开发 DB2 Content Manager 8.2 的单点登录 portlet(9),其中包含所有的连接和断开连接的函数,这个类就是 ICMCo

与 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 令牌方法的指南。

上一页  4 5 6 7 8 9 

Tags:雇员 工作 空间

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