Mut o aplicație de la WebLogic la JBoss EAP 6.4 și aproape că funcționează. Problema este că pot face ca autentificarea Kerberos să funcționeze numai dacă joc cu proprietatea isInitiator în standalone-full-ha.xml pentru serverul spnego.
Dacă am setat isInitiator=true, atunci primesc eroarea la pornirea aplicației „Informațiile de pre-autentificare au fost invalide”.
Dacă am setat isInitiator=false, atunci primesc „NTLM specificat. Trecut la Basic Auth (și/sau SSL) dar downgrade nu este acceptat” când merg la pagină.
Cu toate acestea, dacă mă întorc la isInitiator=true după ce a eșuat cu false, funcționează timp de o zi.
Se întoarce la „Informațiile de pre-autentificare au fost invalide” a doua zi. Trebuie să încerc să mă conectez cu isInitiator=false din nou pentru a-l face să funcționeze din nou.
Meu standalone-full-ha.xaml arată astfel:
<system-properties>
<property name="java.net.preferIPv4Stack" value="true"/>
<property name="org.apache.coyote.http11.Http11Protocol.SERVER" value=""/>
<property name="java.security.auth.login.config" value="/app/jb-8443/login.conf"/>
<property name="java.security.krb5.conf" value="/app/jb-8443/krb5.conf"/>
<property name="sun.security.krb5.debug" value="true"/>
<property name="jboss.security.disable.secdomain.option" value="true"/>
<property name="javax.security.auth.useSubjectCredsOnly" value="false"/>
</system-properties>
...
<security-domain name="spnego-client" cache-type="default">
<authentication>
<login-module code="com.sun.security.auth.module.Krb5LoginModule" flag="required"/>
</authentication>
</security-domain>
<security-domain name="spnego-server" cache-type="default">
<authentication>
<login-module code="com.sun.security.auth.module.Krb5LoginModule" flag="required">
<module-option name="storeKey" value="true"/>
<module-option name="useKeyTab" value="true"/>
<module-option name="useTicketCache" value="false"/>
<module-option name="isInitiator" value="true"/>
<module-option name="keyTab" value="/app/jb-8443/krb5.keytab"/>
<module-option name="debug" value="true"/>
<module-option name="principal" value="[email protected]"/>
<module-option name="doNotPrompt" value="true"/>
</login-module>
</authentication>
</security-domain>
<security-domain name="com.sun.security.jgss.krb5.initiate" cache-type="default">
<authentication>
<login-module code="com.sun.security.auth.module.Krb5LoginModule" flag="required">
<module-option name="storeKey" value="true"/>
<module-option name="useKeyTab" value="true"/>
<module-option name="useTicketCache" value="false"/>
<module-option name="isInitiator" value="true"/>
<module-option name="keyTab" value="/app/jb-8443/krb5.keytab"/>
<module-option name="debug" value="true"/>
<module-option name="principal" value="[email protected]"/>
<module-option name="doNotPrompt" value="true"/>
</login-module>
</authentication>
</security-domain>
<security-domain name="com.sun.security.jgss.krb5.accept" cache-type="default">
<authentication>
<login-module code="com.sun.security.auth.module.Krb5LoginModule" flag="required">
<module-option name="storeKey" value="true"/>
<module-option name="useKeyTab" value="true"/>
<module-option name="useTicketCache" value="false"/>
<module-option name="isInitiator" value="true"/>
<module-option name="keyTab" value="/app/pyks0app/jb-8443/krb5.keytab"/>
<module-option name="debug" value="true"/>
<module-option name="principal" value="[email protected]"/>
<module-option name="doNotPrompt" value="true"/>
</login-module>
</authentication>
</security-domain>
Login.conf are:
com.sun.security.jgss.krb5.initiate {
com.sun.security.auth.module.Krb5LoginModule este necesar
doNotPrompt=true
principal="[email protected]"
useKeyTab=true
useTicketCache=false
depanare=adevărat
keyTab="/app/jb-8443/krb5.keytab"
StoreKey=true;
};
com.sun.security.jgss.krb5.accept {
com.sun.security.auth.module.Krb5LoginModule este necesar
doNotPrompt=true
principal="[email protected]"
useKeyTab=true
keyTab="/app/jb-8443/krb5.keytab"
storeKey=adevărat
useTicketCache=false
isInitiator=fals
refreshKrb5Config=true
moduleBanner=true
storePass=adevărat;
};
spnego-client {
com.sun.security.auth.module.Krb5LoginModule necesar;
};
spnego-server {
com.sun.security.auth.module.Krb5LoginModule este necesar
storeKey=adevărat
useKeyTab=true
useTicketCache=false
keyTab="/app/jb-8443/krb5.keytab"
depanare=adevărat
principal="[email protected]"
doNotPrompt=true;
};
Implementarea WebLogic a avut doar părțile spnego-client și spnego-server. Am adăugat piese com.sun.security.jgss.krb5.initiate și com.sun.security.jgss.krb5.accept și după ce le-am adăugat m-am putut conecta folosind trucul de flip isInitiator.
Există o cale de a ocoli asta? Cum ar fi săriți peste pre-autentificare dacă nu s-ar fi conectat astăzi? Dacă ceva a fost stocat în cache pentru doar 24 de ore, îl mențineți în viață mai mult?
Sunt acelea care inițiază și acceptă părți necesare pe partea de sus a serverului spnego?