WebCenter Interaction的单点登录

To English readers: This is a translation of an earlier post, for Chinese audience.

发布于2009年4月1日

Brenda Yin 翻译于2009年6月24日
最近利用了一些时间搭建了一个WebCenter Interaction (WCI) 单点登录的环境。
下面是环境配置信息:
操作系统:Windows 2003 Server
安装的软件:
WebCenter Interaction 10.3
Oracle WebLogic Server 10.3:   运行WCI 的应用服务器
Oracle HTTP Server (Apache 1.3): 为WCI提供HTTP Proxy
Oracle Access Manager:   提供SSO功能
Oracle Internet Directory:  LDAP 认证服务器
Oracle 11g Database (11.1.0.7):WCI数据库
在搭建的过程中, 参考了官方文档,但是其中一部分文档还没有更新涉及到软件新版本上运行问题的解决办法。出现问题后, 只能在文档的基础上靠经验猜测和他人的帮助来解决。因此非常有必要记录那些问题的解决方法,以供其他人或者自己以后做参考。
在此,特别感谢以下给我提供帮助的人(按字母顺序):  Clarence Cheah, Rory Douglas, Iyad Kloub, Ali Mukadam, Luke McQueen, Igor Polyakov, Tamer Qumhieh, Mike Wertzberger 和 Tanya Williams.
下面列出了一些在文档里没有涉及的重要配置步骤。

Oracle 11g Database配置问题

在本次环境中,WebCenter Interaction 10.3 使用 Oracle Database 11g作为门户数据库, 同时安装了WebCenter Identity Integration for LDAP 服务去连接Oracle Internet Directory。之后该服务的定时工作(job)运行时报出一个SQL错误,然后门户访问也失败了,而且再也无法成功启动。查看日志后,发现以下的SQL查询语句执行失败:

SELECT
 MAX(CS.ACCESSLEVEL) AS ACCESSLEVEL,
 C.NAME,
 C.ISLOCALIZED,
 C.OBJECTID,
 MC2.MEMBERSHIPTYPE
FROM
 PTCOMMUNITIES C,
 PTCOMMSECURITY CS,
 PTVGROUPMEMBERSHIP GM,
 (SELECT
 MAX(MC.MEMBERSHIPTYPE) AS MEMBERSHIPTYPE,
 MC.COMMUNITYID
 FROM
 PTMYCOMMUNITIES MC,
 PTVGROUPMEMBERSHIP GM
 WHERE
 GM.GROUPID=MC.GROUPID
 AND GM.USERID=263
 GROUP BY
 MC.COMMUNITYID) MC2
 WHERE GM.GROUPID=CS.GROUPID
 AND GM.USERID=263
 AND C.OBJECTID=CS.OBJECTID
 AND C.OBJECTID=MC2.COMMUNITYID
GROUP BY
 C.NAME,
 C.ISLOCALIZED,
 C.OBJECTID,
 MC2.MEMBERSHIPTYPE
ORDER BY
 LOWER(C.NAME) ASC

出现了这样的错误:“not a GROUP BY expression.” 。仔细检查了该查询语句没有发现问题。同样该语句在Oracle 10g database上运行成功。经过深入的研究发现是因为启用了11g的查询优化器导致了错误,通过下面的数据库设置可以禁用它:
ALTER SYSTEM SET “_OPTIMIZER_GROUP_BY_PLACEMENT”=FALSE;
在此之前我已经在数据库打了11.1.0.7 的补丁。  所以没有在11.1.0.6版本上测试过这个方法,因此不能肯定是否能解决上述问题。

WebCenter Interaction 配置

为了确保WebCenter Interaction 能和HTTP proxy 很好的工作,需要对位于<BEA_HOME>\alui\settings\portal 目录下的一些配置文件进行修改:
在 configuration.xml中, 查找SystemProperties 组件,然后指定ServerName 和 HTTPPort为你的代理服务器。请参照下面的例子:

 <component name="portal:SystemProperties" type="http://www.plumtree.com/config/component/types/portal/systemproperties">
 <!-- lines removed for brevity -->
 <setting name="ServerName">
 <value xsi:type="xsd:string">proxy.server</value>
 </setting>
 <setting name="HTTPPort">
 <value xsi:type="xsd:integer">8080</value>
 </setting>
 <!-- lines removed for brevity -->
 </component>

然后,修改portalconfig.xml 文件(目录为<BEA_HOME>\alui\settings\portal)。首先查找URLMapping 组件配置,替换 ApplicationURL0和 SecureApplicationURL0 中URL中的门户服务器为代理服务器。请参照下面的例子:假设代理服务器为proxy.server:8080。

 <component name="portal:URLMapping" type="http://www.plumtree.com/config/component/types/portal/urlmapping">
 <!-- URLMapping - Entry 0 -->
 <setting name="URLFromRequest0">
 <value xsi:type="xsd:string">*</value>
 </setting>
 <setting name="ApplicationURL0">
 <value xsi:type="xsd:string">http://proxy.server:8080/portal/server.pt</value>
 </setting>
 <setting name="SecureApplicationURL0">
 <value xsi:type="xsd:string">http://proxy.server:8080/portal/server.pt</value>
 </setting>
 <clients>
 <client name="portal"/>
 </clients>
 </component>

另外一个更改发生在SSO设置部分。查找Authentication 组件,然后设置 SSOVendor 值为 3 (使用 Oracle Access Manager)和CookieDomain.  请参考下面的例子:

 <component name="portal:Authentication" type="http://www.plumtree.com/config/component/types/portal/authentication">
 <!-- lines removed for brevity -->
 <setting name="SSOVendor">
 <value xsi:type="xsd:integer">3</value>
 </setting>
 <setting name="CookieDomain">
 <value xsi:type="xsd:string">.server</value>
 </setting>
 <!-- lines removed for brevity -->
 </component>

Oracle Access Manager 配置

当你为HTTP proxy上WebGate建立Policy Domain的时候,你需要做如下设置:
•    在Resources 标签上, 增加了一个类型为http的Resource,其URL设置为/portal”.
•    在Default Rules标签上, 新建一个Default Rule,其Authentication post success action重定向到/portal/SSOServlet , 并且传递一个 名为UID的 HeaderVar ,它的值为cn。
•    确保你的策略中为类型 http选择了GET 和 POST.
总结
综上所述,这些都是保证它能正确配置和运行的关键点,是从文档中不能明确得到解决办法的,希望对大家有帮助。

This entry was posted in Uncategorized and tagged , , . Bookmark the permalink.

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s