Wie aktiviere ich die Kerberos-Authentifizierung für Remote-EJB-Aufrufe in WebSphere?
Meine Anwendung ist ein eigenständiger Swing-Client, der dank klassischer JNDI-Lookup- und RMI-IIOP-Methodenaufrufe EJB Stateless Session-Beans aufruft. Es wird als Java WebStart-Anwendung gestartet. Mein Ziel ist es, die Identität des Kundenbenutzers abzurufenEJBContext
mitgetCallerPrincipal
Methode dank Kerberos SSO zwischen Windows-Workstation, ActiveDirectory und WebSphere-Server unter Linux.
Ich habe meine WebSphere-Zelle bereits erfolgreich im Network Deployment-Modus für die Unterstützung der Kerberos-Authentifizierung konfiguriertdank der infocenter-dokumentation.
Beidekrb5.conf
undkrb5.keytab
Dateien sind in Ordnung und mit beiden Linux getestetkinit
, klist
undwsadmin
, $AdminTask validateKrbConfig
Antwortentrue
.
DasClient-Setup bezieht sich nur auf einen JAASlogin.config
Datei, die mit der Befehlssystemeigenschaft aktiviert werden soll. Meine Intuition sagt mir, dass es wahrscheinlich nicht genug ist.
Jetzt finde ich keine Informationen mehr, um den Testfall abzuschließen:
Wie muss die anfängliche JNDI-Kontextumgebung eingerichtet werden, um die Kerberos-Aushandlung auszulösen?Wenn es andere Anforderungen auf der Serverseite gibt, wie z. B. das Schützen meiner EJB mit einer Rolle (JBoss benötigt diese beispielsweise nicht)?Aktualisieren
Da läuft kein JavaEE Client Container mit./launchClient
Ich habe in meinem JNLP die erforderlichen Eigenschaften zum Lesen eingestelltsas.client.props
und JAAS Login Konfiguration:
<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"/>
Meinewsjaas_client.config
ist für Oracle Java, enthält also:
WSKRB5Login{
com.sun.security.auth.module.Krb5LoginModule required
debug=true useTicketCache=true doNotPrompt=true;
};
Meinesas.client.props
enthält:
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
Momentan wird keine Kerberos-Authentifizierung ausgelöst: Es gibt kein TGS für den SPNWAS/myserver.mydomain.com
In meinem Kerberos-Cache (entweder von Windows- oder Linux-Workstations) und JNDI wird die Verbindung weiterhin anonym hergestellt.
Keine Fehlermeldung, keine Warnung und schließlich kein Auftraggeber. Wie stelle ich fest, was falsch ist oder fehlt?
Update 20.06.2012
Hier sind einige Schritte vorwärts. In meiner Anwendung JNLP, die mit Oracle Java ausgeführt wird, habe ich die folgenden Eigenschaften festgelegt, um IBM ORB zu verwenden und vollständige Trace- und Debuginformationen zu aktivieren:
<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"/>
Die DateiTraceSettings.properties
enthält
traceFileName=c:\\temp\\traces.log
ORBRas=all=enabled
SASRas=all=enabled
com.ibm.*=all=enabled
Auch nach dem Lesen großer Teile vonWebSphere 7 Security IBM RedBook Ich erhalte immer noch keinen CSIv2-Trigger für die Kerberos-Authentifizierung vom Client.