Cognos具有强大的报表功能,但是却没有提供一个完善的用户管理体系,针对商业智能系统对数据的安全性要求,我们必须实现不同用户对不同数据的访问,确保企业级以及部门级的数据安全.
权限管理模块将实现Cognos Connection对具有不同角色用户的访问限制。有目的的为特定角色指定访问内容,而且可以精确到同一模型中的不同的维度值.
create table COGNOS_USERS
(
user_id VARCHAR2(20) not null,
user_name VARCHAR2(50),
user_pass VARCHAR2(50)
)
create table COGNOS_ROLE
(
role_id VARCHAR2(20) not null,
role_name VARCHAR2(50)
)
create table COGNOS_ROLE_USER
(
role_id VARCHAR2(20) not null,
user_id VARCHAR2(20) not null
)
用户表 user_name user_id user_pass |
用户角色表role_id user_id |
用户表 role_id role_name |
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;
安装过程和安装cognos其他组件一样,和cognos安装在同一个目录上。安装后在安装目录下面D:\Program Files\ibm\cognos\c10就会多出关于SDK的目录 ,如下图:则说明安装成功了
进入D:\Program Files\ibm\cognos\c10\sdk\java\AuthenticationProvider目录,将adapters文件夹下的.java文件都copy到java project中,如下图:
将JDBCSample文件夹下的.java文件都copy到java project中,如下图:
JDBCSample.java 程序入口类
JDBCVisa.java 用户凭证类
MS_JDBCDriver.java数据库驱动类
QueryUtil.java查询工具类
PasspodMessage 此类是一个Boolean类型的类,可有可无,项目中可以用boolean类型的变量来处理。
黄色背景的类基本上都需要修改,改为和自己用户数据库相匹配的代码,数据库驱动类也要和用户所属的数据库类型驱动相同。
(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
[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目录下
示打开Cognos configuration设置界面,关闭Cognos服务,找到 安全-身份验证,如下图
PS:注意java入口类的名称就是java project中的包级别绝对路径名称
PS:如果初次配置,提示无法加载java类的话,就关掉cognos configuration界面,再次打开重新测试即可OK
点击cognos名称空间,设置名称空间的默认属性,将匿名登陆设置为false
用提前设计好的用户表中的用户名和密码登陆访问Cognos
在登陆系统的时候,验证用户名是否存在,如果存在则同时实现Cognos系统的单点登陆,当用户点击报表菜单的时候,不再提示登陆Cognos系统,而是直接可以看到报表的具体内容
对菜单层做一个权限的处理,即不同的用户登陆系统只可以看到自己角色可以看到的报表菜单。
。