Chinaunix首页 | 论坛 | 博客
  • 博客访问: 8351013
  • 博文数量: 444
  • 博客积分: 10593
  • 博客等级: 上将
  • 技术积分: 3852
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-09 15:26
文章分类

全部博文(444)

文章存档

2014年(1)

2013年(10)

2012年(18)

2011年(35)

2010年(125)

2009年(108)

2008年(52)

2007年(72)

2006年(23)

分类: 系统运维

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 目录下。

  • 设定 LDAP 的主机名为:ldap.ibm.com 。端口号为 56274 。
  • 在 ldap 上创建关键用户、组:wpsadmin、wpsbind、wpsadmins 。
  • Base DN 为:dc=ibm,dc=com
  • 用户后缀为:ou=people,dc=ibm,dc=com
  • 组后缀为:ou=group,dc=ibm,dc=com
  • 用户前缀为:uid
  • 组前缀为:cn

然后使用以上参数与相关的任务,启用 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/" 
 
      AllowOverride None 
     Options None 
     Order allow,deny 
     Allow from all  
 Alias /cognos8/ "C:/Cognos/c8/webcontent/" 
 
    Options Indexes MultiViews 
    AllowOverride None 
    Order allow,deny 
    Allow from all 

为了实现 LTPA Token 单点登录方式,我们需要将 Cognos 应用切换到 WAS 上运行,Cognos 需要使用 WAS 的 环境进行读写加密参数。故需保证 Cognos Configuration 的运行 java 环境和 WAS 的 java 环境保持一致。可通过下面的步骤做到这一步:

\bin\java\1.3.1\jre\lib\ext 目录,或者

运行 CMD 命令:

在命令窗口中到 cd C:\IBM\AppServer\bin 目录下运行 setupCmdLine ;运行结束后,不要关闭该窗口,然后进入 Cognos 安装目录,运行 cogconfig ;最后运行 cogconfig 命令后,检查 java 环境是否正确。



Cogconfig 运行窗口

注意图中的 J_HOME 应为 C:\IBM\AppServer\java 目录。

首先,安装 DB2,并运行建库脚本,创建一个 C8 的。

其次,使用 DB2 作为 Content Manager database,Content Manager 库中,输入正确的参数值:如 Host、Port、Alias、Userid、Password 。



DB2 配置 

从门户和其它产品的集成,不可避免的有以下几个方面要做出选择或者实现相关的功能。在下面的部分,本文仅列出几个常见的选项,以及本例中使用的选项。

可选项:

  • Portal 用户管理模块(用户映射表、凭证槽)
  • LDAP 统一管理、分发、配置
  • 分散 LDAP、TDI 同步(需使用 TIM、TDI 产品组件)

示例环境选择:

  • LDAP 统一管理、分发、配置(即 Portal 和 Cognos 共用同一 LDAP)

可选项:

  • LTPA(IBM 特有技术,适用于基于 WebSphere/DOMINO 的应用 )
  • Form-Based SSO(适用于所有 B/S 应用)
  • HTTP Header(适用于所有 B/S 应用)
  • TAM 统一认证
  • GSO-Lockbox(管理和维护身份信息的对应关系)
  • 应用特有认证方式

示例环境选择:

  • HTTP Header
  • LTPA
  • Cognos 特有的 Shared Secret 方式

可选项:

  • Portal Portlet、页面授权、Cognos 自授权
  • TAM 统一授权

示例环境选择:

  • Portal Portlet、页面授权、Cognos 自授权

可选项:

  • 报表 URL+WebPage Portlet
  • Cognos 自带 Cognos Portlet
  • 开发 WebService Portlet(利用 Portlet Factory6.1 或者 Dashboard Framework6.1)

示例环境选择:

  • 报表 URL+WebPage Portlet
  • Cognos 自带的 Cognos Portlet

    系统间 SSO 的实现,其实就是两个系统之间的用户与认证方式的统一。

    Cognos 提供以下几种方式实现与 WebSphere Portal 的 SSO:

    Cognos 至少有多种种方式与 Portal 实现 SSO,最常见的分别为 Shared Secret 方式、LTPA Token 方式,以及使用 TAM、SiteMinder 等第三方的工具或者扩展开发(统称为其它方式),Shared Secret 和 LTPA Token 方式分别有不同的适用场合。如下图:



    SSO 方法

    通俗的讲,上图可以描述为以下语言:

    假如 (Cognos 8 authentication namespace 为 LDAP) 并且 ( 由于某种原因不能使用 Shared Secret) 
    那么 > 选择LTPA Token或者其它方式
    否则
    假如 (Portal userIDs) 与 (userIDs in a Cognos8 namespace) 匹配
    	那么 > 选择Shared Secret. 
    否则 > 只能选择其它方式

    这是 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),如下图。



    LDAP 配置

    设置 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,注意大小写是敏感的。



    Custom Java Provider namespace 配置

    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),如下图。



    LDAP 配置

    设置 Security – Authentication-Cognos 下的“ Allow anonymous access ” 参数为:false.

    保存配置信息。重新启动 cognos 。

    为 LDAP namespace, 配置下列属性:

    • Use external identity 属性,设为 True 。
    • External identity mapping 属性 , 设为:uid=${environment("USER_PRINCIPAL")},ou=people

    根据环境的不同,USER_PRINCIPAL 还有可能需要设为 REMOTE_USER 等其它对应的值。


    Environment 参数配置

    删除“ Cognos 8 “ ,位于 Environment --Cognos 8 service 下。

    处理 EAR 包(实现 J2EE 安全性)

    找到刚才导出的 EAR 包,并导入到开发工具中,打开应用的 部署描述符,点击 Security 标签页。



    WEB 部署描述符

    增加一个安全角色,并命名为 security 。


    图 11. Security 标签页
    Security 标签页

    点击 Security Constraints 标签页,增加一个 Security Constraints,在 Display name 字段中输入 : security 。


    图 12. 增加 Security Constraints
    增加 Security Constraints

    选择 (New Resource Collection) 条目,并点击编辑按钮,将该条目命令为 Security,并为 HTTP Methods 选择 GET、POST 。

    增加 2 个 “ URL Patterns ”分别为:/servlet/dispatchs 以及 /servlet/dispatchs/*,点击 OK 。



    图 13. Web Resource Collections

    点击 Authorized Roles 区域下的编辑按钮,在 Description 字段中输入 Security 并选择下面的 security 条目,点击 OK 。



    图 14. Authorization Constraint

    点击 Servlets 标签页,并选择 Servlet and JSPs 下的 Dispatcher 条目。



    图 15. Servlet and JSPs

    点击 URL Mappings 下的增加按钮,增加如下两个映射;

    /servlet/dispatchs 
     /servlet/dispatchs/*




    在 Security Role References 区域,点击增加;


    图 17. 增加 Security Role References
    增加映射

    在 Role name 字段输入 security 在 Role link 下拉框中选择 security 点击 OK 。


    图 18. 增加 Security Role Ref 输入框
    增加 Security Role Ref 输入框

    最后的结果应为下图所示:


    图 19. 增加 Security Role Ref 结果
    增加 Security Role Ref 结果

    打开应用的应用部署描述符,注意与上述的 Web 部署描述符不同;



    打开应用部署描述符


    将刚才增加的安全角色 security,搜集(Gather)到这里;



    Gather

    保存所有修改,并导出该 EAR 包。


    登录 Cognos dispatchs URL


    选择 Namespace


    登录进入 Cognos

    此时已经登录进入 Cognos 。



    切换到 Websphere 自带的应用 snoop 校验

    此时从 Snoop 的 User Principal 参数中可以看到 wpsadmin,说明 Cognos 的应用安全性已经成功实现。

    从 Catalog 上下载 WebPage Portlet,并安装部署到门户中。该 Portlet 的作用,是直接利用 IFrame. 的方式将 Cognos 报表的链接嵌入到门户页面中减小展现。

    进入 Cognos 报表系统,点击指定报表的属性按钮,从中找到该报表的 URL 。



    找到报表 URL

    直接使用报表的 URL 作为 WebPage 的 URL 参数即可。

    由于该方式仅在 Cognos 自带的 Portlet 实现,故若要直接利用该方式直接展现报表链接,还需利用 com.cognos.cps.auth.CPSTrustedSignon 扩展您的应用。

    如果 Cognos 与 Portal 未实现单点登录,则需要动态的获取当前登录用户的用户名和密码,需要对 WebPage Portlet 进行补充完善。补充实现 WebSphere Portal 凭证槽的功能,以实现下面功能:

    • 在 Portlet 中获取 Portal 认证用户及密码
    • 利用该用户、密码结合报表 URL,组合成直接可以访问报表的链接。

    本文为简单起见,略过凭证槽取密码的过程,读者可以参阅其它文章实现凭证槽的功能。

    通过凭证槽取到密码后,将用户名、密码与 URL 采取如下方式组合:

     报表 URL&CAMUsername=用户名&CAMPassword=密码

    新建 Portal 页面,并把已修正参数的 Webpage portlet 添加到页面中。



    效果图 

    根据上述实现 SSO 的方法,首先实现 Cognos 与 Portal 的 SSO,才能使用该 Portlet 。

    打开 Portal 首页,使用 wpsadmin 作为用户登陆,进入管理界面,选择 Web Modules 并且点击安装按钮,在 Cognos 目录中,找到 CognosBIPortlets_c82.war 这个包在 \cps\ibm\portlets 下。

    安装完成后,找到已安装的 War 包。点击 CognosBIPortlets_C82.war 的链接查看已安装的 portlets,点击编辑按钮,编辑 Cognos BI Content Portlets 的设置,根据实际环境输入适当的参数。


    Cognos portlet 配置

    选择 Cognos Portlet 中的 portlet(Navigator portlet、Search Portlet、Viewer Portlet、Extend Application Portlet),并部署到页面中。


    Cognos 页面导航


    Cognos 报表搜索器


    Cognos 报表浏览器

    构建器让您的 Cognos 得到更广泛的应用。


    Cognos Builder

阅读(1713) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~