分类: 系统运维
2009-06-09 16:44:09
国内使用 Cognos 的客户群已经达到很大的规模,同时,WebSphere Portal 已经作为越来越成熟的应用集成和个性化定制产品被广大有相关需求的所接受。这样,如何把 Cognos 整合到 Portal中,已是越来越多的客户关注的问题。在这之前,由于 Cognos 与 WebSphere Portal 是两款具有不同特性和使用场景的产品(例如:Cognos 默认基于 Tomcat,不使用 LDAP。而 Portal 一般基于 WAS 和 LDAP 作为用户存储),所以二者虽然可以整合,但并不彻底,鲜有成熟案例。
近来,Cognos 8 刚被 收购,Cognos 的整合需求已经可以被更深层次的满足。
那么如何让 Cognos 更具有可扩展性?如何支持 LDAP?如何满足 Portal 单点登录的需要?如何能在 Portal 中直观的展现现有的 Cognos ?如何利用现有的 Cognos Portlet?如何进行 Cognos 自定义 Portlet 的开发?如何能更彻底的将 Cognos 整合到门户中,是本文要阐述的问题。
本文目的,是使用 IBM WebSphere Portal 产品(以下简称 WP),如何集成 Cognos 产品,实现单点登录和信息统一整合展现。
列表
软件名称 | 备注 |
IBM Cognos 8.2 | 报表展现工具 |
IBM WebSphere Application Server6 | Cognos 应用支持平台、 Cognos 应用、解决方案示例 (其它可选产品:Tomcat 等 Cognos 能支持的产品) |
IBM WebSphere Portal 6.0 | 门户整合展现平台 |
IBM HTTP 6.0 | Portal WebServer、Cognos Gateway (其它可选产品:IIS、Apache 等) |
LDAP Server | Cognos 及 Portal 目录服务器 (可选产品:TDS 等) |
DB2 9.5 | 数据存储 |
安装 Portal,在本例中,把 WAS 和 Portal 安装到 c:\ibm\ 下,分别为 c:\ibm\appserver、c:\ibm\portalserver、c:\ibm\profiles 下。
Ldap Server 安装到 C:\ldap 目录下。
然后使用以上参数与相关的任务,启用 Portal 的。
安装 Cognos Server8.2、Cognos Framework
默认安装,将 Cognos8.2 安装在 C:\Cognos\C8 目录下,略。
Framework 默认安装,注意,安装时,应讲 Framework 安装到和 Cognos Server 相同的目录下,略。然后设计若干报表供。
安装 IBM HTTP Server 到 C:\IBM\HTTPServer 目录下。
安装完毕后,修改 httpd.conf 文件,在文件最后,插件设置前,增加以下几行:
ScriptAlias /cognos8/cgi-bin/ "C:/Cognos/c8/cgi-bin/" |
为了实现 LTPA Token 单点登录方式,我们需要将 Cognos 应用切换到 WAS 上运行,Cognos 需要使用 WAS 的 环境进行读写加密参数。故需保证 Cognos Configuration 的运行 java 环境和 WAS 的 java 环境保持一致。可通过下面的步骤做到这一步:
从 运行 CMD 命令: 在命令窗口中到 cd C:\IBM\AppServer\bin 目录下运行 setupCmdLine ;运行结束后,不要关闭该窗口,然后进入 Cognos 安装目录,运行 cogconfig ;最后运行 cogconfig 命令后,检查 java 环境是否正确。 注意图中的 J_HOME 应为 C:\IBM\AppServer\java 目录。 首先,安装 DB2,并运行建库脚本,创建一个 C8 的。 其次,使用 DB2 作为 Content Manager database,Content Manager 库中,输入正确的参数值:如 Host、Port、Alias、Userid、Password 。 从门户和其它产品的集成,不可避免的有以下几个方面要做出选择或者实现相关的功能。在下面的部分,本文仅列出几个常见的选项,以及本例中使用的选项。 可选项: 示例环境选择: 可选项: 示例环境选择: 可选项: 示例环境选择: 可选项: 示例环境选择: 系统间 SSO 的实现,其实就是两个系统之间的用户与认证方式的统一。 Cognos 提供以下几种方式实现与 WebSphere Portal 的 SSO: Cognos 至少有多种种方式与 Portal 实现 SSO,最常见的分别为 Shared Secret 方式、LTPA Token 方式,以及使用 TAM、SiteMinder 等第三方的工具或者扩展开发(统称为其它方式),Shared Secret 和 LTPA Token 方式分别有不同的适用场合。如下图: 通俗的讲,上图可以描述为以下语言: 这是 Cognos 特有的一种与 Portal 产品进行 SSO 的机制。利用此机制时,与 Cognos 及 Portal 所使用的中间件环境关系不大。如 Cognos 可以跑在 Tomcat 下。 配置过程如下: 1、进入 Cognos 配置界面,为所有认证用户(门户 LDAP)配置一个 namespace。 配置 Cognos 使用与 Portal 一致的 LDAP(也可以不一致,不一致时 UID 必须匹配)。 进入 Security-Authentication 标签,增加 LDAP provider 然后按照适当的 LDAP 配置修改参数 (Host and port, Base Distinguished Name, User lookup),如下图。 设置 Security – Authentication-Cognos 下的“ Allow anonymous access ” 参数为:false。 保存配置信息。重新启动 cognos 。 2、为 LDAP namespace, 配置下列属性。 Use external identity 属性,设为 True 。 External identity mapping 属性 , 设为:uid=${environment("REMOTE_USER")},ou=people 。 3、创建并配置 Custom Java Provider namespace 。 Namespace ID 属性指定一个名称,例如: cpstrusted,该名称将来会在 Portlet 中作为配置参数使用。 Java class name 属性中输入:com.cognos.cps.auth.CPSTrustedSignon,注意大小写是敏感的。 4、在 Environment,Portal Services 下,配置如下参数。 在 Trusted Signon Namespace ID 属性中,输入在第一步指定的 Namespace ID,注意该 ID 与第三步中的 Namespace ID 不是同一值(即,这里应该是 dominoLDAP,而不是 cpstrusted)。 在 Shared Secret 属性中,任意输入一个值(本例输入 wpsadmin),注意该值也作为将来在 Portlet 中配置的参数出现。 5、在 Environment ―― Gateway Settings 项下,将 Allow Namespace Override 属性设为 true 。 6、保持配置修改。 7、重启 Cognos 8 服务。 当 Cognos 所在的 WAS Server 与 Portal 所在的 WAS Server 不是同一个 profiles,并且用户注册表是同一个 LDAP 服务器时,可以采用这种方式。 配置 Cognos 使用与 Portal 一致的 LDAP(必须),进入 Security-Authentication 标签,增加 LDAP provider 然后按照适当的 LDAP 配置修改参数 (Host and port, Base Distinguished Name, User lookup),如下图。 设置 Security – Authentication-Cognos 下的“ Allow anonymous access ” 参数为:false. 保存配置信息。重新启动 cognos 。 为 LDAP namespace, 配置下列属性: 根据环境的不同,USER_PRINCIPAL 还有可能需要设为 REMOTE_USER 等其它对应的值。 删除“ Cognos 8 “ ,位于 Environment --Cognos 8 service 下。 处理 EAR 包(实现 J2EE 安全性) 找到刚才导出的 EAR 包,并导入到开发工具中,打开应用的 部署描述符,点击 Security 标签页。 增加一个安全角色,并命名为 security 。 点击 Security Constraints 标签页,增加一个 Security Constraints,在 Display name 字段中输入 : security 。 选择 (New Resource Collection) 条目,并点击编辑按钮,将该条目命令为 Security,并为 HTTP Methods 选择 GET、POST 。 增加 2 个 “ URL Patterns ”分别为:/servlet/dispatchs 以及 /servlet/dispatchs/*,点击 OK 。 点击 Authorized Roles 区域下的编辑按钮,在 Description 字段中输入 Security 并选择下面的 security 条目,点击 OK 。 点击 Servlets 标签页,并选择 Servlet and JSPs 下的 Dispatcher 条目。 点击 URL Mappings 下的增加按钮,增加如下两个映射; 在 Security Role References 区域,点击增加; 在 Role name 字段输入 security 在 Role link 下拉框中选择 security 点击 OK 。 最后的结果应为下图所示: 打开应用的应用部署描述符,注意与上述的 Web 部署描述符不同; 保存所有修改,并导出该 EAR 包。 此时已经登录进入 Cognos 。 此时从 Snoop 的 User Principal 参数中可以看到 wpsadmin,说明 Cognos 的应用安全性已经成功实现。
从 Catalog 上下载 WebPage Portlet,并安装部署到门户中。该 Portlet 的作用,是直接利用 IFrame. 的方式将 Cognos 报表的链接嵌入到门户页面中减小展现。 进入 Cognos 报表系统,点击指定报表的属性按钮,从中找到该报表的 URL 。 直接使用报表的 URL 作为 WebPage 的 URL 参数即可。 由于该方式仅在 Cognos 自带的 Portlet 实现,故若要直接利用该方式直接展现报表链接,还需利用 com.cognos.cps.auth.CPSTrustedSignon 扩展您的应用。 如果 Cognos 与 Portal 未实现单点登录,则需要动态的获取当前登录用户的用户名和密码,需要对 WebPage Portlet 进行补充完善。补充实现 WebSphere Portal 凭证槽的功能,以实现下面功能: 本文为简单起见,略过凭证槽取密码的过程,读者可以参阅其它文章实现凭证槽的功能。 通过凭证槽取到密码后,将用户名、密码与 URL 采取如下方式组合: 新建 Portal 页面,并把已修正参数的 Webpage portlet 添加到页面中。 根据上述实现 SSO 的方法,首先实现 Cognos 与 Portal 的 SSO,才能使用该 Portlet 。 打开 Portal 首页,使用 wpsadmin 作为用户登陆,进入管理界面,选择 Web Modules 并且点击安装按钮,在 Cognos 目录中,找到 CognosBIPortlets_c82.war 这个包在 安装完成后,找到已安装的 War 包。点击 CognosBIPortlets_C82.war 的链接查看已安装的 portlets,点击编辑按钮,编辑 Cognos BI Content Portlets 的设置,根据实际环境输入适当的参数。 选择 Cognos Portlet 中的 portlet(Navigator portlet、Search Portlet、Viewer Portlet、Extend Application Portlet),并部署到页面中。 构建器让您的 Cognos 得到更广泛的应用。
假如 (Cognos 8 authentication namespace 为 LDAP) 并且 ( 由于某种原因不能使用 Shared Secret)
那么 > 选择LTPA Token或者其它方式
否则
假如 (Portal userIDs) 与 (userIDs in a Cognos8 namespace) 匹配
那么 > 选择Shared Secret.
否则 > 只能选择其它方式
uid=${environment("USER_PRINCIPAL")},ou=people
图 11. Security 标签页
图 12. 增加 Security Constraints
/servlet/dispatchs
/servlet/dispatchs/*
图 17. 增加 Security Role References
图 18. 增加 Security Role Ref 输入框
图 19. 增加 Security Role Ref 结果
将刚才增加的安全角色 security,搜集(Gather)到这里;
报表 URL&CAMUsername=用户名&CAMPassword=密码