cognos java_Cognos第三方用户认证(CustomJavaProvider)

关于Cognos第三方用户认证(CustomJavaProvider)的demo网上的例子很多,当然最权威的你可以从Cognos安装的SDK中去探索,本文不详细的说明代码,主要说一下认证的处理过程,以及处理过程中遇到的问题;

Step1:创建Cognos用户安全库

cbf342662fc4cf097b83dff79dd8a57a.png

表的创建脚本:

CREATE TABLE [dbo].[PT_User_Role](

[ID] [int] IDENTITY(1,1) NOT NULL,

[UserID] [int] NULL,

[RoleID] [int] NULL,

CONSTRAINT [PK_User_Role] PRIMARY KEY CLUSTERED

(

[ID] ASC

)

) ON [PRIMARY]

CREATE TABLE [dbo].[PT_User](

[UserID] [int] IDENTITY(1,1) NOT NULL,

[DepID] [int] NULL,

[CardNo] [varchar](10) NULL,

[UserName] [varchar](20) NULL,

[Password] [varchar](50) NULL,

[ChineseName] [varchar](50) NULL,

[Sex] [int] NULL,

[Address] [varchar](200) NULL,

[Phone] [varchar](20) NULL,

[EMail] [varchar](50) NULL,

[Duty] [varchar](50) NULL,

[LoginFlag] [int] NULL,

[LastLogTime] [datetime] NULL,

[Status] [int] NULL,

[FullPath] [varchar](500) NULL,

[BindStatus] [int] NULL,

CONSTRAINT [PK_User] PRIMARY KEY CLUSTERED

(

[UserID] ASC

)

) ON [PRIMARY]

CREATE TABLE [dbo].[PT_Role](

[RoleID] [int] IDENTITY(1,1) NOT NULL,

[RoleName] [varchar](50) NULL,

[Description] [varchar](500) NULL,

[RoleType] [int] NULL,

CONSTRAINT [PK_Role] PRIMARY KEY CLUSTERED

(

[RoleID] ASC

)

) ON [PRIMARY]

CREATE VIEW [dbo].[pt_user_view]

AS

SELECT RoleID AS'uid', RoleName AS 'name', RoleName AS 'givenname', 0 AS issqluser, 1AS issqlrole

FROM dbo.PT_Role

UNION ALL

SELECT UserID AS'uid', UserName AS 'name', ChineseName AS 'givenname', 1 AS issqluser, 0AS issqlrole

FROM dbo.PT_User

Step2:创建第三方认证project

Project目录如图所示

90102511a3d19a6906d73760e63beef5.png

导出为

bf87815b317dde8ef07b2407653f916a.pngEnFoProvider.jar

Step3:将各种需要文件放入指定目录

准备工作已经做好,我们可以看cognos的SDK关于第三方java认证的提醒如下:

/**

* 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.

*/

Running the IBM Cognos SDK custom authentication JDBC provider sample

--------------------------------------------------------------------

To configure and run the sample provided, please follow these steps:

1) Add the Java SDK to your path.

2) Build the sample using the command build.bat on Windows or

build.sh on Unix.

3) Add the jar file to your IBM Cognos 10 classpath or copy the jar to

/webapps/p2pd/WEB-INF/lib.

4) Add the MS SQL server jarfiles (sqljdbc.jar or sqljdbc4.jar) to your classpath or copy the files to

/webapps/p2pd/WEB-INF/lib.

Refer to http://technet.microsoft.com/en-us/library/ms378422.aspx for the system requirements.

5) Copy the JDBC configuration file to the /configuration

directory. Ensure that the name contains the namespaceID to be

recognized (namespaceID is case sensitive).

Ex:

namespaceID = Sample1

JDBC configurations file = JDBC_Config_Sample1.properties

6) Modify the content of the configuration file to point to your

MSSQL database.

7) In IBM Cognos Configuration, configure the Custom Java namespace

using the configuration tool, (the class name and NamespaceID

are case sensitive):

Type: Custom Java provider

Namespace ID: Sample1

Java class name: JDBCSample

8) Apply changes and restart IBM Cognos 10.

The new authentication namespace should now appear in IBM Cognos 10 for

logon and security administration tasks within IBM Cognos 10.

NOTE: Should IBM Cognos 10 fail to start up once the new namespace

is configured, please verify your configuration. IBM Cognos 10 will

not start up if it cannot successfully communicate to the

authentication source.

--按照上面的步骤操作

注意的地方是:集成的jar文件放在/webapps/p2pd/WEB-INF/lib 目录,JDBC_Config_EnFoProvider.properties数据库配置文件放在/configuration目录,

然后/webapps/p2pd/WEB-INF/lib也要有数据库驱动文件,比如sqljdbc.jar,class12.jar等等;

Step4:在Cognos Configuration中配置命名空间;

4.1:进入安全→身份验证右键点击新建资源-名称空间,如图确定

0b36ae3cb57ffac84fcae05f25adfd29.png

确定以后,如下配置

c27198757a80576ee060c5157336c18e.png

空间标示符需要和JDBC_Config_EnFoProvider.properties中文件的末尾一样,java类名就是指我们自己的project中认证的入口类的完整路径,OK,保存测试:

注意,此处我们会遇到一个最常见的问题就是无法加载类,问题分析:

第一:可能是jdk版本问题,最好不要太低(cognos10最好是jdk1.6以上)

第二:可能是当前cognos配置没有加载,关掉Cognos Configuration界面然后重新test 如下图

20afc3089a2f40728f83dedc2f2d4350.png

则说明jar文件已经被加载成功。

4.2:关闭cognos匿名访问

1b47b950dc5f585eb017f8af6ce94720.png

启动cognos报表服务:访问cognos connection

e86d74b679f8619f2da88490a420dd91.png

这里的admin 来自sqlserver库中表[dbo].[PT_User]中

8dcc1252bd2a50098945a2f15cf53e65.png

我们换个用户登录,

06bc6fd870d2b305e5c3c85f09f3fc5f.png

从上面我们可以看出来,我们自己库中的用户可以登录了,而且登录以后都可以管理cognos的内容,这说明了我们现在的所有用户都是管理员,是什么原因呢,OK进入看一下我们的名称空间,如下图:

dd80409f5ed010ffaedda39b2f902ea2.png

0b306b6c24e2b1229cbc6d5e8f912fcc.png

从上面可以看出在cognos的默认空间中,系统管理员的角色中包含任何人这个用户组,所以我们就需要把这个任何人从Cognos这个名称空间中删除,切记:删除之前,把我们自己的管理组角色添加来,如果不添加进来,那么就没有管理员角色了,唯一的办法只有去执行管理员初始化脚本,先回复所有人管理员的权限,然后执行上面的操作;

OK,在cognos名称空间中添加了我们自己名称空间中数据管理员的角色,然后再删除了任何人以后;

我们再次用wxj普通用户和属于数据管理员的用户admin登录,可以看到普通用户不在具有管理cognos内容的功能了,admin就可以

86dbff14409ad7ee5ed8b4fa4f3d841f.png

7f1787880f04ae598514d4637e60c4d7.png

OK,截止目前一个简单的第三方认证登录已经完成了;

需要注意的是:我们只是把我们自己创建的名称空间中的角色加入了Cognos自带的角色中,而这个操作需要管理员的权限来完成,我们一开始要保留所有用户/匿名用户的系统管理员权限(这里也可以说是在cognos的名称空间中系统管理员角色中包含‘任何人’这个成员),这个是cognos初始默认的情况;然后我们用我们自己名称空间中的用户登录,此时所有用户都具有管理员的权限,然后执行:添加自定义管理员到cognos的管理员中,从cognos的管理员中去掉‘任何人’OK,结果是:在我们的操作中,我们自己名称空间中的管理员组拥有了cognos管理员的权限,不是管理员的组的用户的权限也可以用我们具有管理员权限的用户来操作了;

问题补充:如果一切OK以后,并且访问了cognos connection以后,名称空间的camid就会被保存在Content Manager的内容库中,如果再次修改资料空间的名称就要报错了,因为相同ID的名称空间已经存在

解决办法:删掉内容库,重新配置,一切OK;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值