由于经典的JNDI查找和RMI-IIOP方法调用,我的应用程序是一个独立的Swing客户端调用EJB无状态会话bean.它作为Java WebStart应用程序启动.我的目标是从获取客户端用户的身份EJBContext与getCallerPrincipal感谢的Kerberos SSO在Windows工作站,ActiveDirectory中和在Linux上运行的WebSphere服务器之间的方法.
由于信息中心文档,我已经在网络部署模式下成功配置了我的WebSphere单元以支持Kerberos身份验证.
这两个krb5.conf和krb5.keytab文件都OK,并在Linux测试kinit,klist并且wsadmin,$AdminTask validateKrbConfig解答true.
在客户端安装不只是指JAAS login.config文件,以实现与指挥系统属性.我的直觉告诉我这可能还不够.
但现在,我找不到更多信息来完成测试用例:
更新
由于没有运行JavaEE客户端容器./launchClient,我在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"/>
Run Code Online (Sandbox Code Playgroud)
我wsjaas_client.config是针对Oracle Java的,因此它包含:
WSKRB5Login{
com.sun.security.auth.module.Krb5LoginModule required
debug=true useTicketCache=true doNotPrompt=true;
};
Run Code Online (Sandbox Code Playgroud)
我的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
Run Code Online (Sandbox Code Playgroud)
目前,没有触发Kerberos身份验证:WAS/myserver.mydomain.com我的kerberos缓存(来自Windows或Linux工作站)中的SPN没有TGS,并且仍然匿名建立JNDI连接.
没有错误消息,没有警告,最后没有委托人.我如何诊断错误或缺乏?
更新2012/06/20
这是向前迈出的一步.在我的应用程序JNLP中运行Oracle Java,我已设置以下属性以使用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"/> …Run Code Online (Sandbox Code Playgroud)