【发布时间】:2023-03-21 13:40:01
【问题描述】:
由于经典的 JNDI 查找和 RMI-IIOP 方法调用,我的应用程序是一个独立的 Swing 客户端,它调用 EJB 无状态会话 bean。它作为 Java WebStart 应用程序启动。我的目标是使用getCallerPrincipal 方法从EJBContext 检索客户端用户的身份,这要归功于Windows 工作站、ActiveDirectory 和Linux 上运行的WebSphere 服务器之间的Kerberos SSO。
我已经成功地将我的 WebSphere 单元配置为网络部署模式以支持 Kerberos 身份验证thanks to the infocenter documentation。
krb5.conf 和 krb5.keytab 文件都可以,并且在 Linux kinit、klist 和 wsadmin、$AdminTask validateKrbConfig 上都经过测试,答案是 true。
client setup 仅引用 JAAS login.config 文件以通过命令系统属性启用。我的直觉告诉我这可能还不够。
但现在,我找不到更多信息来完成测试用例:
- 必须如何设置 JNDI 初始上下文环境才能触发 Kerberos 协商?
- 如果服务器端有其他要求,例如使用角色保护我的 EJB(例如 JBoss 不需要它)?
更新
由于没有使用 ./launchClient 运行 JavaEE 客户端容器,我在 JNLP 中设置了读取 sas.client.props 和 JAAS 登录配置所需的属性:
<property name="java.security.auth.login.config" value="C:\temp\wsjaas_client.config"/>
<property name="com.ibm.CORBA.ConfigURL" value="C:\temp\sas.client.props"/>
我的wsjaas_client.config 用于 Oracle Java,因此它包含:
WSKRB5Login{
com.sun.security.auth.module.Krb5LoginModule required
debug=true useTicketCache=true doNotPrompt=true;
};
我的sas.client.props 包含:
com.ibm.CORBA.securityEnabled=true
com.ibm.CORBA.authenticationTarget=KRB5
com.ibm.CORBA.loginSource=krb5Ccache
com.ibm.CORBA.loginUserid=
com.ibm.CORBA.loginPassword=
com.ibm.CORBA.krb5CcacheFile=
com.ibm.CORBA.krb5ConfigFile=C:\\temp\\krb5.conf
目前,未触发任何 Kerberos 身份验证:我的 kerberos 缓存(来自 Windows 或 Linux 工作站)中没有 SPN WAS/myserver.mydomain.com 的 TGS,并且 JNDI 连接仍以匿名方式建立。
没有错误消息,没有警告,最后没有主体。我如何诊断出了什么问题或缺少什么?
2012/06/20 更新
这里有一些前进的步骤。在使用 Oracle Java 运行的应用程序 JNLP 中,我设置了以下属性以使用 IBM ORB 并启用完整的跟踪和调试信息:
<property name="org.omg.CORBA.ORBSingletonClass" value="com.ibm.rmi.corba.ORBSingleton"/>
<property name="org.omg.CORBA.ORBClass" value="com.ibm.CORBA.iiop.ORB"/>
<property name="traceSettingsFile" value="C:\temp\TraceSettings.properties"/>
文件TraceSettings.properties包含
traceFileName=c:\\temp\\traces.log
ORBRas=all=enabled
SASRas=all=enabled
com.ibm.*=all=enabled
即使在阅读了WebSphere 7 Security IBM RedBook 的大部分内容后,我仍然无法从客户端获取 CSIv2 触发器 Kerberos 身份验证。
【问题讨论】:
标签: java jakarta-ee ejb websphere kerberos