Cognos第三方權限認證Oracle用戶庫


一:概要描述

      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:菜單報表訪問效果

對菜單層做一個權限的處理,即不同的用戶登陸系統只可以看到自己角色可以看到的報表菜單。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM