安全性授权提供程序故障诊断技巧
本文描述使用 Java™ Authorization Contract for Containers (JACC) 授权提供程序时可能遇到的问题。Tivoli® Access Manager 与 WebSphere® Application Server 捆绑在一起,用作授权提供程序。但是,您还可以插入自己的授权提供程序。
作为 Java Authorization Contract for Containers 授权提供程序的 Tivoli Access Manager
- JACC 的配置可能失败。
- 在配置 JACC 后,服务器可能无法启动。
- 应用程序可能未正确部署。
- 在您已配置 Tivoli Access Manager 后 startServer 命令可能失败,或取消配置 JACC 后完全卸载没有发生。
- 可能会发生“HPDIA0202W 向 Access Manager 提供了未知的用户名”错误。
- 可能会发生“HPDAC0778E 指定的用户帐户设置为无效”错误。
- 可能会发生“WASX7017E: 运行 InsuranceServicesSingle.jacl 文件时接收到异常”错误。
- 使用 JACC 访问应用程序时,发生“访问被拒绝”异常
- 可能会发生“HPDBA0219E: 通过 SSL 连接读取数据时发生错误”
可能会发生“端口集中没有可用的端口”错误
Java Authorization Contract for Containers 授权提供程序的外部提供程序
JACC 的配置可能失败
如果您配置 JACC 时发生问题,请检查以下各项:
- 确保参数正确。例如,您不希望 TAM_Policy_server_hostname:7135 后有数字,但希望 TAM_Authorization_server_hostname:7136后有数字(例如,TAM_Authorization_server_hostname:7136:1)。
- 如果显示了“无法访问服务器”之类的消息,那么可能是 Tivoli Access Manager 服务器的主机名或端口号不正确,也可能是 Tivoli Access Manager 服务器尚未启动。
- 确保 sec_master 用户的密码正确。
- 检查 SystemOut.log 并搜索字符串 AMAS 以查看是否存在任何错误消息。
在配置 JACC 后,服务器可能无法启动
如果在配置 JACC 后服务器未启动,请检查以下各项:
- 确保 WebSphere Application Server 和 Tivoli Access Manager 使用同一个轻量级目录访问协议 (LDAP) 服务器。
- 如果显示了“Policy Director 认证失败”消息,请确保:
- WebSphere Application Server LDAP 服务器标识与 Tivoli Access Manager JACC 配置面板中的“管理员用户”相同。
- 验证 Tivoli Access Manager 管理员专有名称 (DN) 是否正确。
- 验证 Tivoli Access Manager 管理员的密码是否未到期并且有效。
- 确保帐户对 Tivoli Access Manager 管理员有效。
- 如果显示了“无法为 xxxx 打开套接字”之类的消息(其中 xxxx 是数字),请完成以下操作:
- 切换到 profile_root/etc/tam 目录。
- 如果 Deployment Manager 无法启动,那么在 amwas.commomconfig.properties 文件和 amwas*cellName_dmgr.properties 文件中将 xxxx更改为可用的端口号。如果节点无法启动,那么在 amwas*cellName_nodeName_.properties 文件中将 xxx 更改为可用的端口号。如果应用程序服务器无法启动,那么 amwas*cellname_nodeName_serverName.properties 文件中更改 xxxx。
应用程序可能未正确部署
当您单击保存时,策略和角色信息将传播到 Tivoli Access Manager 策略。此过程可能要花一些时间来完成。如果保存失败,那么您必须卸载此应用程序然后重新安装它。
要在安装应用程序后访问它,缺省情况下,必须在保存后等待 30 秒才能启动此应用程序。
startServer 命令可能会失败
在您配置 Tivoli Access Manager 后 startServer 命令可能失败,或取消配置 JACC 后完全卸载没有发生。
- 从 WebSphere Application Server 中移除 Tivoli Access Manager 属性文件。对于定义了
N 个服务器(例如 server1 和 server2)的 WebSphere Application Server Network Deployment (ND) 环境中的每个应用程序服务器。
必须移除下列文件。
install_root/tivoli/tam/PdPerm.properties install_root/tivoli/tam/PdPerm.ks profile_root/etc/tam/*
必须移除下列文件。
profile_root/etc/pd/PolicyDirector/PDPerm.properties profile_root/etc/pd/PolicyDirector/PdPerm.ks profile_root/etc/tam/*
- 使用实用程序清除安全配置,并将系统返回到配置 Tivoli Access Manager JACC 提供程序前的状态。实用程序会从 security.xml 文件中移除所有
PDLoginModuleWrapper 条目和 Tivoli Access Manager 授权表条目,从而有效地移除 Tivoli Access Manager JACC 提供程序。在运行此实用程序前备份 security.xml 文件。
输入以下命令:
install_root/java/jre/bin/java -classpath “install_root/lib/AMJACCProvider.jar:CLASSPATH” com.tivoli.pd.as.jacc.cfg.CleanSecXML fully_qualified_path/security.xml
输入以下命令:
java -Djava.version=1.5 -classpath “app_server_root/lib/AMJACCProvider.jar:CLASSPATH” com.tivoli.pd.as.jacc.cfg.CleanSecXML fully_qualified_path/security.xml
“HPDIA0202W: 向 Access Manager 提供了未知的用户名”
AWXJR0008E Failed to create a PDPrincipal for principal mgr1.:
AWXJR0007E A Tivoli Access Manager exception was caught. Details are:
“HPDIA0202W An unknown user name was presented to Access Manager.”
此问题可能是在针对 MS Active Directory 进行配置时,主机名超过 Tivoli Access Manager 的预定义限制而引起的。在 WebSphere Application Server 中,主机名的最大长度不得超过 46 个字符。确定主机名不是全限定的。配置该机器,以便主机名不包含主机域。
- 在命令行上,输入以下信息以获取 Tivoli Access Manager 命令提示符:
这时将显示 pdadmin administrator_name 提示符。例如:pdadmin -a administrator_name -p administrator_password
pdadmin -a administrator1 -p passw0rd
- 在 pdadmin 命令提示符下,通过输入以下信息将用户从 LDAP 用户注册表导入到 Tivoli Access Manager:
例如:user import user_name cn=user_name,o=organization_name,c=country
user import jstar cn=jstar,o=ibm,c=us
user modify user_name account-valid yes
例如: user modify jstar account-valid yes
有关如何将组从 LDAP 导入到 Tivoli Access Manager 的信息,请参阅 Tivoli Access Manager 文档。
“HPDAC0778E: 指定的用户帐户设置为无效”
AWXJR0008E Failed to create a PDPrincipal for principal mgr1.:
AWXJR0007E A Tivoli Access Manager exception was caught.
Details are: "HPDAC0778E The specified user's account is set to invalid."
user modify user_name account-valid yes
例如: user modify jstar account-valid yes
“HPDJA0506E: 参数无效:ACL 条目的用户名字段为 Null 或者长度为零”
AWXJR0035E An error occurred while attempting to add member,
cn=agent3,o=ibm,c=us, to role AgentRole
HPDJA0506E Invalid argument: Null or zero-length user name field for
the ACL entry
要更正此错误,请创建或导入用户,将此用户映射至 Tivoli Access Manager 的安全角色。有关安全策略信息的更多信息,请参阅授权提供程序的文档。
WASX7017E: 运行“InsuranceServicesSingle.jacl”文件时接收到异常
WASX7017E: Exception received while running file "InsuranceServicesSingle.jacl";
exception information: com.ibm.ws.scripting.ScriptingException: WASX7111E:
Cannot find a match for supplied option:
"[RuleManager, , , cn=mgr3,o=ibm,c=us|cn=agent3,o=ibm,c=us, cn=ManagerGro
up,o=ibm,c=us|cn=AgentGroup,o=ibm,c=us]" for task "MapRolesToUsers"
将 Tivoli Access Manager 用作授权服务器时,$AdminApp MapRolesToUsers 任务选项不再有效。要更正错误,请将 MapRolesToUsers 更改为 TAMMapRolesToUsers。
使用 JACC 访问应用程序时,发生“访问被拒绝”异常
AWXJR0044E: The access decision for Permission, {0}, was denied because either the
PolicyConfiguration or RoleConfiguration objects did not get created successfully at
application installation time. RoleConfiguration exists = {false}, PolicyConfiguration
exists = {"false"}.
如果“访问被拒绝”异常不是应用程序所期望的,那么检查 SystemOut.log 文件以查看是否已将安全策略信息正确地传播到提供程序。
如果应用程序的安全策略信息成功地传播到提供程序,那么显示消息密钥为 SECJ0415I 的审计声明。但是,如果将安全策略信息传播到提供程序时发生出现问题(例如,网络问题或 JACC 提供程序不可用),那么 SystemOut.log 文件包含消息密钥为 SECJ0396E 的错误消息(安装期间)或消息密钥为 SECJ0398E 的错误消息(修改期间)。由于将安全策略传播到 JACC 提供程序失败,所以未停止应用程序的安装。同样,如果发生故障,那么保存操作期间不会出现异常或错误消息。当导致此故障的问题已解决时,请运行 propagatePolicyToJaccProvider 工具将安全策略信息传播到提供程序,而不必重新安装应用程序。
“HPDBA0219E: 通过 SSL 连接读取数据时发生错误”
在 WebSphere Application Server Network Deployment (ND) 上安装应用程序并启用具有 Tivoli Access Manager 的受管节点时,在 dmgr SystemOut.log 中可能会出现错误消息 HPDBA0219E。
如果发生此错误,那么可能无法立即获得最近部署的应用程序的安全策略数据。何时可获得策略数据取决于 Tivoli Access Manager 的服务器复制时间。此时间缺省为在所有更新都已完成之后 30 秒。要确保可获得最新的策略数据,请登录到 pdadmin 控制台并输入:server replicate。
![[z/OS]](../images/ngzos.gif)
可能会发生“端口集中没有可用的端口”错误
使用 Tivoli Access Manager 作为 JACC 提供程序并使用管理控制台或 wsadmin 脚本来停止 WebSphere Application Server 时,将针对 Tivoli Access Manager 运行清除进程。WebSphere Application Server 无法完成该清除进程。
WebSphere Application Server 对每个新进程使用不同的端口号。最终,应用程序服务器将会为了连接到 Tivoli Access Manager 服务器而用尽端口号,并显示“端口集中没有可用的端口”错误。
如果发生此错误,那么您必须手动清除可用于 WebSphere Application Server 进程的端口。