一:概要描述
1.1:項目背景
Cognos具有強大的報表功能,但是卻沒有提供一個完善的用戶管理體系,針對商業智能系統對數據的安全性要求,我們必須實現不同用戶對不同數據的訪問,確保企業級以及部門級的數據安全.
1.2:功能描述
權限管理模塊將實現Cognos Connection對具有不同角色用戶的訪問限制。有目的的為特定角色指定訪問內容,而且可以精確到同一模型中的不同的維度值.
二:實現機制
2.1:用戶角色表結構設計
2.1.1:用戶表設計
create table COGNOS_USERS
(
user_id VARCHAR2(20) not null,
user_name VARCHAR2(50),
user_pass VARCHAR2(50)
)
2.1.2:角色表設計
create table COGNOS_ROLE
(
role_id VARCHAR2(20) not null,
role_name VARCHAR2(50)
)
2.1.3:用戶角色對應表設計
create table COGNOS_ROLE_USER
(
role_id VARCHAR2(20) not null,
user_id VARCHAR2(20) not null
)
2.1.4:三個表的關系設計
用戶表 user_name user_id user_pass |
用戶角色表role_id user_id |
用戶表 role_id role_name |
2.1.5:創建用戶角色視圖
create or replace view cognos_view as
select u.user_id,u.user_name,1 issqluser, 0 issqlrole,u.user_chinisename givenname from cognos_users u
union all
select r.role_id,r.role_name,0 issqluser, 1 issqlrole,r.role_name givenname from cognos_role r;
2.2:基於SDK的二次開發
2.2.1:安裝SDK的過程
安裝過程和安裝cognos其他組件一樣,和cognos安裝在同一個目錄上。安裝后在安裝目錄下面D:\Program Files\ibm\cognos\c10就會多出關於SDK的目錄 ,如下圖:則說明安裝成功了
2.2.2:基於JAVA的用戶身份驗證開發
2.2.2.1:從SDK中提取工具類和demo類
進入D:\Program Files\ibm\cognos\c10\sdk\java\AuthenticationProvider目錄,將adapters文件夾下的.java文件都copy到java project中,如下圖:
將JDBCSample文件夾下的.java文件都copy到java project中,如下圖:
2.2.2.2:修改主要查詢類和驅動類的關鍵代碼
JDBCSample.java 程序入口類
JDBCVisa.java 用戶憑證類
MS_JDBCDriver.java數據庫驅動類
QueryUtil.java查詢工具類
PasspodMessage 此類是一個Boolean類型的類,可有可無,項目中可以用boolean類型的變量來處理。
黃色背景的類基本上都需要修改,改為和自己用戶數據庫相匹配的代碼,數據庫驅動類也要和用戶所屬的數據庫類型驅動相同。
2.3:權限管理配置過程
2.3.1:生成所需jar包
(1)認證程序核心jar包
將開發的java project導出成jar文件的格式,比如Intrust.jar
(2)定義數據庫配置文件
JDBC_Config_Intrust.properties格式注意和入口類中讀取配置信息的規則保持一致,比如Intrust和NameSpaceID保持一致,當然這里也可以隨意寫,在java類讀取配置文件信息的時候寫死也是可以的
內容如下:
Oracle
# Licensed Materials - Property of IBM
#
# IBM Cognos Products: CAMAAA
#
# (C) Copyright IBM Corp. 2005, 2011
# # US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with
# IBM Corp.
server=128.8.28.212
databaseName=cognos
Sqlserver
server=localhost:1433
databaseName=CognosSecurity
username=wxj
password=wxj1988
(3)數據庫驅動程序
注意自己用戶庫的類型,SqlServer和oracle有所不同,我這里是ojdbc5.jar
2.3.2:cognos安裝目錄中配置文件的添加
[1]:將intrust.jar與ojdbc5.jar添D:\Program Files\ibm\cognos\c10\webapps\p2pd\WEB-INF\lib目錄下
[2]:將JDBC_Config_Intrust.propertiesr添加到D:\Program Files\ibm\cognos\c10\configuration目錄下
2.3.3:cognos configuration 中用戶認證空間的配置
2.3.3.1:新建namespace認證空間
2.3.3.1.1:新增一個名稱空間
示打開Cognos configuration設置界面,關閉Cognos服務,找到 安全-身份驗證,如下圖
2.3.3.1.2:為新增名稱空間指定名稱-選擇名稱空間的類型
2.3.3.1.3:設置名稱空間的屬性
PS:注意java入口類的名稱就是java project中的包級別絕對路徑名稱
2.3.3.1.4:測試名稱空間是否通過驗證
PS:如果初次配置,提示無法加載java類的話,就關掉cognos configuration界面,再次打開重新測試即可OK
2.3.3.1.5設置默認cognos名稱空間
點擊cognos名稱空間,設置名稱空間的默認屬性,將匿名登陸設置為false
三:呈現效果
3.1:Cognos系統效果實現
3.1.1訪問cognos connection時提示登陸
用提前設計好的用戶表中的用戶名和密碼登陸訪問Cognos
3.1.2登陸通過Cognos的驗證
3.1.3安全界面顯示用戶庫的所有角色和用戶
3.2:第三方系統權限管理
3.2.1:登陸系統實現效果
在登陸系統的時候,驗證用戶名是否存在,如果存在則同時實現Cognos系統的單點登陸,當用戶點擊報表菜單的時候,不再提示登陸Cognos系統,而是直接可以看到報表的具體內容
3.2.2:菜單報表訪問效果
對菜單層做一個權限的處理,即不同的用戶登陸系統只可以看到自己角色可以看到的報表菜單。
。