程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> WebSphere >> 如何實現Websphere Portal 6.0與Cognos 8集成應用開發

如何實現Websphere Portal 6.0與Cognos 8集成應用開發

編輯:WebSphere

目的

國內使用 Cognos 的客戶群已經達到很大的規模,同時,WebSphere Portal 已經作為越來越成熟的應用集成和個性化定制產品被廣大有相關需求的企業所接受。這樣,如何把 Cognos 整合到 Portal中,已是越來越多的客戶關注的問題。在這之前,由於 Cognos 與 WebSphere Portal 是兩款具有不同特性和使用場景的產品(例如:Cognos 默認安裝基於 Tomcat,不使用 LDAP。而 Portal 一般基於 WAS 和 LDAP 作為用戶存儲),所以二者雖然可以整合,但並不徹底,鮮有成熟案例。

近來,Cognos 8 剛被 IBM 收購,Cognos 的整合需求已經可以被更深層次的滿足。

那麼如何讓 Cognos 更具有可擴展性?如何支持 LDAP?如何滿足 Portal 單點登錄的需要?如何能在 Portal 中直觀的展現現有的 Cognos 報表?如何利用現有的 Cognos Portlet?如何進行 Cognos 自定義 Portlet 的開發?如何能更徹底的將 Cognos 整合到門戶中,是本文要闡述的問題。

本文目的,是使用 IBM WebSphere Portal 產品(以下簡稱 WP),如何集成 Cognos 產品,實現單點登錄和信息統一整合展現。

示例環境架構及環境准備

圖 1. 拓撲結構圖



表 1. 軟件列表 軟件名稱 備注 IBM Cognos 8.2 報表展現工具 IBM WebSphere Application Server6 Cognos 應用支持平台、 Cognos 應用、解決方案示例
(其它可選產品:Tomcat 等 Cognos 能支持的產品) IBM WebSphere Portal 6.0 門戶整合展現平台 IBM HTTP Server 6.0 Portal WebServer、Cognos Gateway
(其它可選產品:IIS、Apache 等) LDAP Server Cognos 及 Portal 目錄服務器
(可選產品:TDS 等) DB2 9.5 數據存儲

配置 Portal 使用 LDAP

安裝 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 的安全性。

IHS 做 Cognos Gateway

安裝 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/"
<Directory "C:/Cognos/c8/cgi-bin/">
   AllowOverride None
   Options None
   Order allow,deny
   Allow from all </Directory>
 Alias /cognos8/ "C:/Cognos/c8/webcontent/"
<Directory "C:/Cognos/c8/webcontent/">
  Options Indexes MultiViews
  AllowOverride None
  Order allow,deny
  Allow from all </Directory>

運行 Cognos Configuration

為了實現 LTPA Token 單點登錄方式,我們需要將 Cognos 應用切換到 WAS 上運行,Cognos 需要使用 WAS 的 java 環境進行讀寫加密參數。故需保證 Cognos Configuration 的運行 java 環境和 WAS 的 java 環境保持一致。可通過下面的步驟做到這一步:

從 <Cognos 8 install location>\bin\java\1.3.1\jre\lib\ext 目錄,或者 <Cognos 8MR1 install\location\\bin\jre\1.4.2\lib\ext 目錄下,拷貝 Cognos Cryptographic providers (jar 文件 ) 。將所有的 jar 文件拷貝到 WAS 的目錄 java 環境下,為:C:\IBM\AppServer\java\jre\lib\ext. 。當提示是否覆蓋文件時,選擇“否”。

運行 CMD 命令:

在命令窗口中到 cd C:\IBM\AppServer\bin 目錄下運行 setupCmdLine ;運行結束後,不要關閉該窗口,然後進入 Cognos 安裝目錄,運行 cogconfig ;最後運行 cogconfig 命令後,檢查 java 環境是否正確。

圖 2. Cogconfig 運行窗口

注意圖中的 J_HOME 應為 C:\IBM\AppServer\java 目錄。

配置 Cognos 使用 Db2

首先,安裝 DB2,並運行建庫腳本,創建一個 C8 的數據庫。

其次,使用 DB2 作為 Content Manager database,Content Manager 庫中,輸入正確的參數值:如 Host、Port、Alias、Userid、Password 。

圖 3. 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

Portal 與 Cognos 實現 SSO(單點登錄)

系統間 SSO 的實現,其實就是兩個系統之間的用戶與認證方式的統一。

Cognos 提供以下幾種方式實現與 WebSphere Portal 的 SSO:

決定恰當的 SSO 方法

Cognos 至少有多種種方式與 Portal 實現 SSO,最常見的分別為 Shared Secret 方式、LTPA Token 方式,以及使用 TAM、SiteMinder 等第三方的工具或者擴展開發(統稱為其它方式),Shared Secret 和 LTPA Token 方式分別有不同的適用場合。如下圖:

圖 4. SSO 方法

通俗的講,上圖可以描述為以下語言:

假如 (Cognos 8 authentication namespace 為 LDAP) 並且 ( 由於某種原因不能使用 Shared Secret)
那麼 > 選擇LTPA Token或者其它方式
否則
假如 (Portal userIDs)與(userIDs in a Cognos8 namespace) 匹配 
 那麼 > 選擇Shared Secret. 
否則 > 只能選擇其它方式 

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

圖 5. 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,注意大小寫是敏感的。

圖 6. Custom Java Provider namespace 配置

4、在 Environment,Portal Services 下,配置如下參數。

在 Trusted Signon Namespace ID 屬性中,輸入在第一步指定的 Namespace ID,注意該 ID 與第三步中的 Namespace ID 不是同一值(即,這裡應該是 dominoLDAP,而不是 cpstrusted)。

在 Shared Secret 屬性中,任意輸入一個值(本例輸入 wpsadmin),注意該值也作為將來在 Portlet 中配置的參數出現。

圖 7. Portal Services 配置

5、在 Environment ―― Gateway Settings 項下,將 Allow Namespace Override 屬性設為 true 。

6、保持配置修改。

7、重啟 Cognos 8 服務。

LTPA Token 方式

當 Cognos 所在的 WAS Server 與 Portal 所在的 WAS Server 不是同一個 profiles,並且用戶注冊表是同一個 LDAP 服務器時,可以采用這種方式。

配置 Cognos 使用與 Portal 一致的 LDAP(必須),進入 Security-Authentication 標簽,增加 LDAP provider 然後按照適當的 LDAP 配置修改參數 (Host and port, Base Distinguished Name, User lookup),如下圖。

圖 8. 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 等其它對應的值。

為 Cognos 應用啟用安全性,並部署到 WAS 上

若不打算使用 LTPA 方式實現 SSO,本步驟可以不做,但為了獲取更高的性能,以及更好的可擴展性,強烈建議把 Cognos 配置在 WAS 上運行。

運行 CogConfig(注意先在 was 下運行 setupcmdline),進入 Environment 部分,修改所有的端口號為 9300 的部分為 WebSphere AppServer Server 的 Server1 使用的端口號 10000,並注意修改正確的主機名。

圖 9. Environment 參數配置

刪除“ Cognos 8 “ ,位於 Environment --Cognos 8 service 下。

創建 EAR 包

所有上述步驟完成後(LDAP、DB2、WAS),將 EAR 包導出。並部署在 WAS 上。

具體步驟為:

點擊菜單上的 Action- Build Application File,選擇 Cognos8,並點擊下一步 ; 確保 EAR file 被選中,然後點擊下一步 ; 最後點擊 Finish.,將該 EAR 包導出。

使用開發工具處理 EAR 包(實現 J2EE 安全性)

找到剛才導出的 EAR 包,並導入到開發工具中,打開應用的 WEB 部署描述符,點擊 Security 標簽頁。

圖 10. WEB 部署描述符

增加一個安全角色,並命名為 security 。

圖 11. Security 標簽頁

點擊 Security Constraints 標簽頁,增加一個 Security Constraints,在 Display name 字段中輸入 : security 。

圖 12. 增加 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/*

圖 16. 增加映射

在 Security Role References 區域,點擊增加;

圖 17. 增加 Security Role References

在 Role name 字段輸入 security 在 Role link 下拉框中選擇 security 點擊 OK 。

圖 18. 增加 Security Role Ref 輸入框

最後的結果應為下圖所示:

圖 19. 增加 Security Role Ref 結果

打開應用的應用部署描述符,注意與上述的 Web 部署描述符不同;

圖 20. 打開應用部署描述符

將剛才增加的安全角色 security,搜集(Gather)到這裡;

圖 21. Gather

保存所有修改,並導出該 EAR 包。

部署 EAR 到 WAS 上

增加環境變量,把 Cognos/bin 加入到 WAS 的 PATH 變量中;安裝 EAR 包,並綁定安全設定。通過以下方式進行驗證,

圖 22. 登錄 Cognos dispatchs URL

圖 23. 選擇 Namespace

圖 24. 登錄進入 Cognos

此時已經登錄進入 Cognos 。

圖 25. 切換到 Websphere 自帶的應用 snoop 校驗

此時從 Snoop 的 User Principal 參數中可以看到 wpsadmin,說明 Cognos 的應用安全性已經成功實現。

Server1 與 Portal 統一 LTPA Token

最後將 Portal 與 Cognos 所在的 WAS 的 LTPA 的 key 統一起來(即,將 Portal 的 LTPA 的 key 導出來,導入到 WAS 中即可,反之亦然),SSO 即已實現。

利用現成的 Cognos 報表直接在 Portal 中展現

部署 WebPage Portlet

從 Catalog 上下載 WebPage Portlet,並安裝部署到門戶中。該 Portlet 的作用,是直接利用 IFrame 的方式將 Cognos 報表的鏈接嵌入到門戶頁面中減小展現。

確定 Cognos 報表的 URL

進入 Cognos 報表系統,點擊指定報表的屬性按鈕,從中找到該報表的 URL 。

圖 26. 找到報表 URL

 

已實現 LTPA 方式單點登錄(SSO)時

直接使用報表的 URL 作為 WebPage 的 URL 參數即可。

已實現 Shared Secret 方式單點登錄(SSO)時

由於該方式僅在 Cognos 自帶的 Portlet 實現,故若要直接利用該方式直接展現報表鏈接,還需利用 com.cognos.cps.auth.CPSTrustedSignon 擴展您的應用。

未實現單點登錄(SSO)時,

如果 Cognos 與 Portal 未實現單點登錄,則需要動態的獲取當前登錄用戶的用戶名和密碼,需要對 WebPage Portlet 進行補充完善。補充實現 WebSphere Portal 憑證槽的功能,以實現下面功能:

在 Portlet 中獲取 Portal 認證用戶及密碼

利用該用戶、密碼結合報表 URL,組合成直接可以訪問報表的鏈接。

本文為簡單起見,略過憑證槽取密碼的過程,讀者可以參閱其它文章實現憑證槽的功能。

通過憑證槽取到密碼後,將用戶名、密碼與 URL 采取如下方式組合:

http://hostname/cognos8/cgi-bin/cognos.cgi? 報表 URL&CAMUsername=用戶名&CAMPassword=密碼

將 Portlet 部署在門戶頁面中展現

新建 Portal 頁面,並把已修正參數的 Webpage portlet 添加到頁面中。

圖 27. 效果圖

使用 Cognos 自帶的 Portlet

先決條件,必須實現 Cognos 與 Portal 的 SSO

根據上述實現 SSO 的方法,首先實現 Cognos 與 Portal 的 SSO,才能使用該 Portlet 。

安裝配置

打開 Portal 首頁,使用 wpsadmin 作為用戶登陸,進入管理界面,選擇 Web Modules 並且點擊安裝按鈕,在 Cognos 目錄中,找到 CognosBIPortlets_c82.war 這個包在 <Cognos8 installation location>\cps\ibm\portlets 下。

安裝完成後,找到已安裝的 War 包。點擊 CognosBIPortlets_C82.war 的鏈接查看已安裝的 portlets,點擊編輯按鈕,編輯 Cognos BI Content Portlets 的設置,根據實際環境輸入適當的參數。

Shared Secret 方式

Cognos 與 Portal 所在的服務運行在同一個 WAS Profiles 上。甚至運行在同一個 server(process) 上。可直接利用 Shared Secret 方式實現的 SSO 進行配置。

cps_auth_namespace=cpstrusted
 Active Credential Type=HttpBasicAuth
 Cognos 8 WSRP WSDL Location=
http://portal.ibm.com/cognos8/cgi-bin/cognos.cgi/wsrp/
cps4/portlets/nav?wsdl&b_action=cps.wsdl

cps_auth_secret=wpsadmin( 注意該值與前面使用 Shared Secret 實現 SSO 中第 4 步配置的 Shared Secret 的值一致 )

圖 28. Cognos portlet 配置

LtpaToken 方式

若 Cognos 所在的 WAS Server 和 Portal 所在的 WAS Server 不是同一個 was profiles,則必須統一兩個 Server 的 LtpaToken 。

此時,Cognos Portlet 可配置如下:

Active Credential Type=LtpaToken 
 Cognos 8 WSRP WSDL Location=
http://portal.ibm.com/cognos8/cgi-bin/cognos.cgi/wsrp/
cps4/portlets/nav?wsdl&b_action=cps.wsdl

這裡 Cognos 8 WSRP WSDL Location 還可以用 http://portal.ibm.com:10000/ p2pd/servlet/dispatchs/wsrp/cps4/portlets /nav?wsdl&b_action=cps.wsdl,但在之前 SSO 的設置中,需要做一些調整。注意這中間的差別。

這個 WSDL 參數中用到的鏈接,在 Portal 與 Cognos 實現 SSO 步驟中必須成功,否則 Portlet 不可用。

在 Portal 頁面中部署 Portlet

選擇 Cognos Portlet 中的 portlet(Navigator portlet、Search Portlet、Viewer Portlet、Extend Application Portlet),並部署到頁面中。

自帶 Cognos Portlet 提供的功能 ( 效果圖 )

Cognos 頁面導航

提供報表導航功能,可以方便的查看浏覽報表。

圖 29. Cognos 頁面導航

Cognos 報表搜索器

可以非常方便的通過各種條件查找報表。

圖 30. Cognos 報表搜索器

Cognos 報表浏覽器

提供靈活的報表配置功能,並有很多可選的報表定制項。

圖 31. Cognos 報表浏覽器

Cognos 擴展應用

若實現擴展應用的功能,本文所寫的內容僅是必要條件,但還需進行其它配置,請參考 Cognos 自帶的幫助。

快速定制開發 Cognos Portlet

若現成的 Portlet 不能滿足需求,則需要自己定制開發 Cognos Portlet 。

儀表盤加速器開發工具 WebSphere Dashboard6.1 提供商業智能構建器讓您的 Cognos 得到更廣泛的應用。

Dashboard6.1 提供現成的 Cognos 組件 Cognos Builder

更方便更徹底的訪問 Cognos 的報表、數據。

圖 32. Cognos Builder

預置的組件使得 WebSphere SOA 工具能夠將 BI 信息做為服務管理

無需 Java 開發,通過 RAD 工具構建應用來獲取和重用 BI 數據,使 BI 系統中的數據可以繼承 WebSphere Dashboard 的“可操作”特性。

特性

開發人員確定用戶在運行期間需要選擇哪些報告和參數

用於在儀表盤中展示的數據可以是 XML,或者由其他構建器運算或者其他方式生成

減少登錄在運行期間能夠自動指定信任狀和認證方法的能力

向下鑽取構建器

將來自各方數據源的數據生成用戶圖表,用戶可以通過圖表數據進行向上或者向下鑽取,更詳細的信息,可以訪問 Dashboard6.1 的相關鏈接。

結束語

利用 IBM WP 提供的單點登錄和應用整合功能,可以集成 Cognos 的信息展現界面,達到應用集成的目的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved