• 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 Filesibmcognosc10就会多出关于SDK的目录 ,如下图:则说明安装成功了

    2.2.2:基于JAVA的用户身份验证开发

    2.2.2.1:从SDK中提取工具类和demo类

    进入D:Program Filesibmcognosc10sdkjavaAuthenticationProvider目录,将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 Filesibmcognosc10webappsp2pdWEB-INFlib目录下

    [2]:将JDBC_Config_Intrust.propertiesr添加到D:Program Filesibmcognosc10configuration目录下

    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:菜单报表访问效果

    对菜单层做一个权限的处理,即不同的用户登陆系统只可以看到自己角色可以看到的报表菜单。

  • 相关阅读:
    2021.07.14牛客学习
    2021.07.13学习总结
    new和malloc区别(自己口头描述)以及delete用法
    排序整理(c++实现),搭配图解
    如何将bilibili上缓存的文件转成MP4
    第07组 团队Git现场编程实战
    第二次结队编程作业
    团队项目-需求分析报告
    团队项目-选题报告
    第一次结对编程作业
  • 原文地址:https://www.cnblogs.com/wxjnew/p/3573418.html
Copyright © 2020-2023  润新知