1.简介
WebSphere Application Server提供了非常成熟强大的J2EE安全认证机制。WebSphere Application Server启动安全模式,有3种用户注册表(安全认证的数据源):
1) 本地操作系统(Local OS)
2) 轻量级目录访问协议(LDAP)
3) 定制用户注册表(Custom User Registry)
其中方式一和方式二快速方便,无需建立专门的用户数据库。但是,更多时候,客户拥有独立的用户验证数据库存储用户安全信息。方式三使得WebSphere Application Server可以和任意类型数据源进行整合,比如数据库,文件系统,甚至是网络认证服务器。今天主要说一下独立用户注册表这种认证机制。
2.定制用户注册表概念
定制用户注册表是一个定制实现的用户注册表,它实现了WebSphere Application Server提供UserRegistry Java接口。一个定制用户注册表可以支持任意类型的用户数据源,包括关系型数据库,文件系统等等,因此,定制用户注册表在整合已有用户数据源方面非常适用。UserRegistry接口规定了是用来定义WebSphere Application Server对密码或是安全证书进行验证的一系列方法,一个定制用户注册表必须实现UserRegistry接口中的全部方法。
3.UserRegistry接口概述
UserRegistry接口包括的用户信息:
- 用户安全名字(User Security Name):用于验证的用户名字,就如本地操作系统验证方式的用户名。
- 用户唯一ID(User Unique ID):每个用户对应的唯一ID。
- 用户显示名字(User Display Name):可选项,用于显示该用户的名字,比如在欢迎界面,相当于本地操作系统验证方式下的该用户的全名。
- 组安全名字(Group Security Name):用于验证的组的名字,就如本地操作系统的用户。
- 组唯一ID(Group Unique ID):每个组对应的唯一ID。
- 组显示名字(Group Display ID):可选项,用于显示该组的名字,比如在欢迎界面,相当于本地操作系统验证方式下的该组的全名。
UserRegistry接口必须实现的方法:
- initialize
- checkPassword
- mapCertificate
- getRealm
- getUsers
- getUserDisplayName
- getUniqueUserId
- getUserSecurityName
- isValidUser
- getGroups
- getGroupDisplayName
- getUniqueGroupId
- getUniqueGroupIds
- getGroupSecurityName
- isValidGroup
- getGroupsForUser
- getUsersForGroup
- createCredential
4.实现UserRegistry接口
必须实现UserRegistry接口定义的所有方法(createCredential方法例外)。下面详细介绍与整合密切相关的两个方法initialize 和checkPassword,并给出DemoCustomRegistry中的实现代码。在实现代码之前需要去was控制台里面配置一些信息。
点击安全性->安全管理、应用程序和基础结构

这里选择独立定制注册表,点击配置

因为我们要实现自己的验证用户(我们自己的数据库)的机制,这里的用户名添业务库的用户名,类名就是我们自己实现UserRegistry的类,点击定制属性

新建

这里加载了配置文件,里面的信息是连接数据库的url name password,一会需要从这里读取。点击确定之后在第一个页面点击设置为当前。
到此Was控制台配置完成,下面开始实现代码。
initialize方法
public void initialize(Properties props) throws CustomRegistryException,RemoteException {
try {
if (props != null) {
url = props.getProperty("url");
user = props.getProperty("user");
password = props.getProperty("password");
}
} catch(Exception ex) {
throw new CustomRegistryException(ex.getMessage(),ex);
}
if (url == null || user == null || password == null ) {
throw new CustomRegistryException("users/groups information missing");
}
configOK = true;
}
}
getUsers方法
public Result getUsers(String pattern, int limit) throws CustomRegistryException, RemoteException {
Result result = new Result();
Connection conn = null;
try {
conn = getConnection();
Statement stmt = conn.createStatement();
stmt.setFetchSize(limit);
pattern = pattern.replace('*','%');
String sSQL = "SELECT " + COLUMN_USER_NAME + " FROM " + TABLENAME_USER + " WHERE " + COLUMN_USER_NAME + " LIKE '%" + pattern + "%'";
printLog((new StringBuilder("In getting users:")).append(sSQL).toString());
ResultSet rs = stmt.executeQuery(sSQL);
int i=0;
List allUsers = new ArrayList();
while(rs.next() && ++i<=limit) {
allUsers.add(rs.getString(COLUMN_USER_NAME));
}
if(i == limit) {
result.setHasMore();
}
result.setList(allUsers);
stmt.close();
rs.close();
} catch(Exception ex) {
throw new CustomRegistryException(ex.getMessage(), ex);
} finally {
if(conn != null) closeConnection(conn);
}
return result;
}
这里要怎么写完全可以自己定,这个方法就是前面第二张图填入用户名点击确定要去数据库里找这个用户,如果找不到会报错。
checkPassword方法
checkPassword方法用于验证该用户名以及对应的密码是否合法。该函数是整合用户数据源的关键。
public String checkPassword(String userSecurityName, String password) throws PasswordCheckFailedException, CustomRegistryException, RemoteException {
return username;
}
配置完这些,重启服务,就可以实现WAS跟业务库的结合。

- 大小: 30.8 KB

- 大小: 25.7 KB

- 大小: 16.5 KB

- 大小: 14.2 KB
分享到:
相关推荐
WebSphere Application Server 6 是IBM推出的一款企业级应用服务器,是构建、部署和管理Java EE应用程序的重要平台。本文将详细阐述其安装配置的全过程,并通过图文形式帮助理解每个步骤。 一、系统需求与准备工作 ...
### WebSphere Application Server 6 安装与配置详解 #### 一、WebSphere Application Server (WAS) 6 的安装步骤 **1. WAS 安装准备** - **启动安装程序:** 双击安装盘上的 `WAS/install.exe` 开始安装过程。 ...
该播放器具备常见的功能,如打开MP3文件、支持文件拖放、暂停播放、快进、音量控制,并且包含了WSE(WebSphere Studio Application Developer Integration Edition)打包脚本。我们将详细解析每个关键文件的作用,...
1. **监控工具**:利用各种监控工具(如IBM Tivoli Monitoring、WebSphere Application Server Administration Console等)来收集性能数据,分析系统瓶颈。 2. **测试环境**:在实际生产环境之前,在模拟真实负载的...
IBM WebSphere (TM) Application Server 4.0 IBM WebSphere (TM) Application Server 5.0 Inprise Application Server Iona iPortal Application Server Oracle (R) Application Server 9i Pramati Server 1.1 ...