ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 配置 Websphere Studio 以使用 Tivoli Access Manager 和 JAAS

配置 Websphere Studio 以使用 Tivoli Access Manager 和 JAAS

原创 Linux操作系统 作者:CloudSpace 时间:2009-01-13 09:36:38 0 删除 编辑
本文向您说明了如何设置 Websphere Studio 开发环境以使用 Access Manager 的 JASS 实现。这些说明对于任何 Java 运行时(如 Websphere- Application Server)都是适用的。本文给出了样本代码,以说明通过 JAAS 从定制 Java 代码到 Access Manager 调用的简单授权。

© Copyright International Business Machines Corporation 2003. All rights reserved.

引言

用于电子商务的 IBM® Tivoli® Access Manager(以下称为 Access Manager)是一个企业范围的安全性解决方案。它提供了端到端的安全性,包括单点登录、基于 Web 的分布式管理和基于策略的安全性。它还提供了 Java™ 认证和授权服务(Java™ Authentication and Authorization Service,JAAS)API 的取出即可用(out-of-the-box)的实现,JAAS API 现在是标准的 J2EE 安全性 API。Java 开发人员可以对标准的 JAAS API 进行编码,并仍然利用 Access Manager 的中央安全性资源库的功能。

本文向您说明了如何设置 Websphere Studio 开发环境以使用 Access Manager 的 JASS 实现。这些说明对于任何 Java 运行时(如 Websphere® Application Server)都是适用的。本文给出了样本代码,以说明通过 JAAS 从定制 Java 代码到 Access Manager 调用的简单授权。








假设和预配置

  • 本文假设 Websphere Studio 已安装到了 C:\WSAD目录中。如果安装到了另一个目录,那么需要更改到这个给定的目录。
  • 本文假定您的 Access Manager 服务器已被恰当地安装与配置。它可以与 WebSphere Studio 在同一台机器上,也可以在不同的机器上。如果它们安装在同一台机器上,那么可以跳过第 2 步,但是请确保您已安装了 Java 运行时。
  • 第 8 步是可选的,这一步假定您已经安装与配置了 Access Manager WebSEAL 服务器。如果没有安装与配置 Access Manager WebSEAL 服务器,那么您可以跳过这一步 - 您将仍然能够通过 JAAS 使用 Access Manager 进行认证和授权,只是不具有 WebSEAL 提供的 Web 单点登录而已。

所使用的产品版本

  • Websphere Studio Application Developer V4.01
  • Tivoli Access Manager V3.9

这些说明应当能在 Tivoli Access Manager 的任何版本以及任何基于 WebSphere Application Server 4.x 的 WebSphere Studio 测试服务器上使用。









1. 选择要配置的 JRE

您必须选择一个特别的 Java 运行时环境(Java runtime environment,JRE)来使用 JAAS 并连接到 Access Manager 服务器。本文假定您将配置 Websphere Studio 测试服务器。但是对于任何 JRE,您都可以遵循相同的步骤 - 仅仅将路径替换为那个 JRE 的路径即可。

Websphere Studio 测试服务器的 JRE 位于以下目录中: C:\WSAD\plugins\com.ibm.etools.server.jdk\jre








2. 安装 Access Manager 运行时和 Java 运行时

从 Tivoli Access Manager CD 安装 IBM SecureWay Directory 3.2.2 客户机。请确保只安装客户机,除非您为了一些其他目的计划在开发机器上运行 LDAP 服务器。请安装到 C:\IBM\LDAP目录下

请再用 Tivoli Access Manager CD 安装 Access Manager 运行时和 Java 运行时组件。请安装到 C:\IBM\Tivoli\PolicyDirector目录









3. 定制并运行配置批处理文件

向文件 C:\IBM\Tivoli\PolicyDirector\PD\sbin\pdjrtecfg.bat添加粗体部分,对它进行修改:

. . .

"C:\WSAD\plugins\com.ibm.etools.server.jdk\jre\bin\java" -Djava.ext.dirs -Dpd.home="%PD_HOME%"
-cp "%PDJ_CLASSPATH%" com.tivoli.pd.jcfg.PDJrteCfg %1 %2 %3 %4 %5 %6 %7 %8 %9

将这个文件保存为 sbin目录下的 pdjrtecfg.wsad.bat

从命令提示符切换到 sbin目录,然后运行以下命令:

pdjrtecfg.wsad.bat -action config -java_home C:\WSAD\plugins\com.ibm.etools.server.jdk\jre

如果这个批处理命令执行成功,您可能得不到响应,或者得到一条说“已创建了 PolicyDirector”的消息。这个命令应当还将 PD.jar文件和 jaas.jar文件复制到 C:\WSAD\plugins\com.ibm.etools.server.jdk\jre\lib\ext目录中。因此现在您可以将这些文件添加到任何引用 JAAS 类或 Access Manager 类的 WebSphere Studio 项目的构建目录中了 - 使用 SERVER_JDK类路径变量并展开。








4. 运行 Java SvrSslCfg 配置程序

从命令提示符运行以下命令(所有命令都在一行中):

"C:\WSAD\plugins\com.ibm.etools.server.jdk\jre\bin\java" com.tivoli.mts.SvrSslCfg pdwsad



sec_master password   policy-server hostname   authorization-server hostname  

7135 7136

其中:

  • sec_master password 是 Access Manager 管理员用户的密码,即 sec_master.
  • policy-server hostname 是安装 Access Manager 策略服务器的主机名称(如果按第 2 步那样本地安装,那么它便是您的本地机器的主机名称。)
  • policy-server hostname 安装 Access Manager 授权服务器的主机名称(如果按第 2 步那样本地安装,那么便是您的本地机器的主机名称。)
  • pdwsad是将在 Access Manager 中定义的新服务器节点的名称(如果愿意,您可以选择一个不同的名称)。
  • 71357136分别是 Access Manager 策略服务器和授权服务器的端口 - 如果您的服务器不使用这些缺省的端口,可以替换它们。

如果这个命令执行成功,您应当得不到响应。








5. 修改 java.security 文件

打开 WebSphere Studio 测试服务器的 java.security文件:

C:\WSAD\plugins\com.ibm.etools.server.jdk\jre\lib\security\java.security

在该文件底部添加以下几行:

# JAAS login configuration file location
login.config.url.1=file:${java.home}/lib/security/config.pd
# JAAS authorization policy file location
auth.policy.url.1=file:${java.home}/lib/security/jaas.policy







6. 修改 java.policy 文件

C:\WSAD\plugins\com.ibm.etools.server.jdk\jre\lib\security目录中的 java.policy 文件添加以下几行:

// for JAAS and TAM we must grant the following permissions:
grant {
permission javax.security.auth.AuthPermission "createLoginContext";
permission javax.security.auth.AuthPermission "doAs";
permission javax.security.auth.AuthPermission "doAsPrivileged";
permission javax.security.auth.AuthPermission "modifyPrincipals";
permission javax.security.auth.AuthPermission "getSubject";
permission javax.security.auth.AuthPermission "createPDPrincipal";
};








7. 添加 jaas.policy 文件和 config.pd 文件

C:\WSAD\plugins\com.ibm.etools.server.jdk\jre\lib\security目录中创建以下文件:

config.pd

//// config.pd: Login configuration file for PDLoginModule
pd-debug {
com.tivoli.mts.PDLoginModule required debug=true;
};
pd {
com.tivoli.mts.PDLoginModule required;
};
pd-nopass {
com.tivoli.mts.PDLoginModule required nameOnly=true;
};

jaas.policy

grant Principal com.tivoli.mts.PDPrincipal "*" {
permission com.tivoli.mts.PDPermission "ignoreme","a";
};

使用 pd-debug登录配置以在运行时期间启用 Access Manager 认证的额外的跟踪。您现在应当可以对 Access Manager 服务器进行 JAAS 认证和授权,所有认证和授权都在 WebSphere Studio 测试环境内部进行。欲了解更多有关用 JAAS 进行开发的信息,请参阅下面的参考。








8. 为 WebSphere Studio 测试环境添加 WebSEAL 结点(可选)

只有在您想 Java 代码集成在 Access Manager WebSEAL 中时才需要做这一步,Access Manager WebSEAL 是一个逆向代理服务器,它支持单点登录,提高了安全性并使安全性更好管理。

在 WebSEAL 服务器上启动 Administration 命令提示符(pdadmin)并运行以下命令以创建一个到运行在 8080 端口上的 WebSphere Studio 测试服务器的结点。在一行中输入单独的命令并让命令提示符按需要滚动。

pdadmin>server task webseald-



webseal hostname

create -t tcp -h



{wsad hostname}


-p 8080 -j -w -i -c iv-user /wsad



XXX


pdadmin>server task webseald-



webseal hostname

show /wsad



XXX



其中:

  • 用 WebSEAL 服务器的主机名替换 webseal hostname
  • 用 WebSphere Studio 工作站的主机名替换 wsad hostname
  • 用您的工作站标识(如您的姓名、一个唯一的数字或您的主机名称)替换 XXX

现在,如果您请求以下 URL,实际上就是您将经过 WebSEAL 到达在 8080 端口上的 WebSphere Studio 测试服务器:

https://{webseal-hostname}/wsadXXX







如何运行样本代码

您可以 下载样本代码,如下所示。这些代码提供了使用 JAAS API 调用 Tivoli Access Manager 的示例。欲完全了解发生的情况,请通读 JSP 和 Java 代码,通篇都带有注释。

将样本代码安装到 WebSphere Studio 中

创建一个名为 JAAS-SampleWeb的 Web 新项目。然后将 JAAS-SampleWeb.war文件导入到这个项目中。要确保您的 Web 项目被配置为一个 EAR 项目的模块。

创建 Access Manager 样本对象

为了运行样本代码,必须首先在 Access Manager 中创建一些样本对象,如 用户、小组和受保护资源。

启动 pdadmin命令行(它在 Windows 启动菜单中称为“管理命令提示符(Administration command prompt)”)。在以 sec_master登录后 - 运行以下脚本 - 复制并粘贴好。两个用户的密码都为 passw0rd(用零代替“o”)。

################################################
# Access Manager Configuration for JAAS Sample #
################################################
#Run these commands from the pdadmin command line.
#Note: login as sec_master before running these commands.
#create object space and protected resources
objectspace create /MyApp "Protected objectspace for JAAS sample." 0
object create /MyApp/MyProtectedResource "Protected resource for JAAS Sample" 0
#create sampleAdmins group
#NOTE: depending on your LDAP setup, you may have to change the distinguished name used below
group create sampleAdmins cn=sampleAdmins,cn=groups,dc=ibm,dc=com sampleAdmins
#create user arthur -- you could copy and change user name if you want to add more users
#NOTE: depending on your LDAP setup, you may have to change the distinguished name used below
user create arthur uid=arthur,cn=users,dc=ibm,dc=com arthur Arthur passw0rd
user modify arthur account-valid yes
#add user arthur to sampleAdmins group
group modify sampleAdmins add arthur
#create user igor, but don't add him to sampleAdmins group
#NOTE: depending on your LDAP setup, you may have to change the distinguished name used below
user create igor uid=igor,cn=users,dc=ibm,dc=com igor Igor passw0rd
user modify igor account-valid yes
#create sample_ACL
acl create sample_ACL
acl modify sample_ACL set group sampleAdmins Trx
acl modify sample_ACL set description "Default ACL for JAAS sample."
#attach sample_ACL to protected resource object
acl attach /MyApp/MyProtectedResource sample_ACL

运行这个样本

在 WebSphere Studio 中配置和启动 WebSphere Test Server。请确保已经将 EAR 项目添加到了这台服务器。然后只需单击下面的 URL 即可,这些 URL 将以不同的方式调用测试 JSP:

A. 不使用密码进行测试,用户 Arthur

http://localhost:8080/JAAS-SampleWeb/SecurityHandlerTest.jsp?user=arthur&pwdRequired=no&resource=/MyApp/MyProtectedResource
测试成功,因为 Arthur 是 sampleadmins 组的一部分,这个组对指定的受保护资源有 r(读)访问权限。

图 1. 授权成功。
授权成功

B. 不使用密码进行测试,用户 Igor

http://localhost:8080/JAAS-SampleWeb/SecurityHandlerTest.jsp?user=igor&pwdRequired=no&resource=/MyApp/MyProtectedResource
授权失败,因为 Igor 不是 sampleadmins 组的成员。

图 2. 授权失败。
授权失败

C. 使用密码进行测试,用户为 Arthur,密码为 badpwd

http://localhost:8080/JAAS-SampleWeb/SecurityHandlerTest.jsp?user=arthur&pass=badpwd&pwdRequired=yes&resource=/MyApp/MyProtectedResource
这一次,认证失败了,因为密码不正确。

图 3. 认证失败:错误密码。
认证失败 - 错误密码

D. 使用密码进行测试,用户为 Arthur,密码为 passw0rd

http://localhost:8080/JAAS-SampleWeb/SecurityHandlerTest.jsp?user=arthur&pass=passw0rd&pwdRequired=yes&resource=/MyApp/MyProtectedResource
现在,认证成功了,因为密码正确,并且授权也成功了,因为 Arthur 是 sampleadmins组的成员。

图 4. 认证与授权都成功。
认证与授权都成功

禁用 Arthur 的帐户并查看结果

现在,请试着在 pdadmin 命令行运行以下命令: user modify arthur account-valid no。然后执行上面的实例 D 中的 URL。您应当得到一个 AccountExpired异常:

图 5. 帐户无效。
帐户无效








结束语

本文描述了设置 Websphere Studio 开发环境以使用 Tivoli Access Manager 的 JAAS 实现的过程。您可以使用这些步骤来设置任何的 Java 运行时环境,如开发服务器或生产服务器。您现在应当可以编写通过其 JAAS API 的实现与 Access Manager 进行对话的 Java 应用程序了。









相关信息









下载

名字 大小 下载方法
JAAS-SampleWeb.zip 0.1 MB HTTP
关于下载方法的信息


关于作者


Michael Lucas是位于阿乐伯塔(Alberta)省的卡乐加里的 IBM e-business Integration Solutions 小组的一名顾问 IT 专家。他使用 IBM WebSphere 技术为客户开发 Web 应用程序。您可以通过 mlucas@ca.ibm.com与 Michael 联系。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14789789/viewspace-536573/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-07-08

  • 博文量
    355
  • 访问量
    863691