雇员工作空间系列: 配置和开发DB2 Content Manager 8.2的单点登录portlet
2010-05-14 15:00:25 来源:WEB开发网现在,您已经完成了单点登录 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 令牌方法的指南。
- ››工作中的C++:基本原理,重点推荐和结束语
- ››工作流编程循序渐进(5:状态机工作流)
- ››工作流编程循序渐进(1:代码活动与时间延迟活动)...
- ››工作流编程循序渐进(2:IfElseActivity活动)
- ››工作流编程循序渐进(3:While活动)
- ››工作流编程循序渐进(4:InvokeWorkflowActivity活...
- ››工作组环境下WPAD部署的另类解决--WINS解析
- ››空间商限制功能阻止SEO优化
- ››雇员工作空间系列: 配置和开发DB2 Content Manage...
- ››工作负载分区(WPAR)中的资源控制
- ››工作娱乐两不误 听歌就用E音乐盒
- ››工作中常用的高效的CSS代码
更多精彩
赞助商链接