ฉันกำลังย้ายแอปพลิเคชันจาก WebLogic ไปยัง JBoss EAP 6.4 และฉันเกือบจะใช้งานได้แล้ว ปัญหาคือฉันจะรับการพิสูจน์ตัวตน Kerberos ให้ใช้งานได้ก็ต่อเมื่อฉันเล่นกับคุณสมบัติ isInitiator ในสแตนด์อโลน-full-ha.xml ของฉันสำหรับเซิร์ฟเวอร์ spnego
ถ้าฉันตั้งค่า isInitiator=true ฉันจะได้รับข้อผิดพลาดในการเริ่มต้นแอป "ข้อมูลการตรวจสอบสิทธิ์ล่วงหน้าไม่ถูกต้อง"
ถ้าฉันตั้งค่า isInitiator=false ฉันจะได้รับ "ระบุ NTLM ดาวน์เกรดเป็น Basic Auth (และ/หรือ SSL) แต่ไม่รองรับการปรับลดรุ่น" เมื่อฉันไปที่เพจ
อย่างไรก็ตาม ถ้าฉันกลับไปที่ isInitiator=true หลังจากที่ล้มเหลวด้วยเท็จ มันจะใช้งานได้หนึ่งวัน
กลับไปที่ "ข้อมูลการตรวจสอบล่วงหน้าไม่ถูกต้อง" ในวันถัดไป ฉันต้องพยายามเชื่อมต่อกับ isInitiator=false อีกครั้งเพื่อให้ใช้งานได้อีกครั้ง
สแตนด์อโลนเต็ม Ha.xaml ของฉันมีลักษณะดังนี้:
<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 มี:
com.sun.security.jgss.krb5.initiate {
ต้องใช้ com.sun.security.auth.module.Krb5LoginModule
doNotPrompt=จริง
หลัก = "[email protected]"
useKeyTab=จริง
useTicketCache=เท็จ
แก้จุดบกพร่อง = จริง
keyTab="/app/jb-8443/krb5.keytab"
storeKey=จริง;
};
com.sun.security.jgss.krb5.accept {
ต้องใช้ com.sun.security.auth.module.Krb5LoginModule
doNotPrompt=จริง
หลัก = "[email protected]"
useKeyTab=จริง
keyTab="/app/jb-8443/krb5.keytab"
storeKey=จริง
useTicketCache=เท็จ
isInitiator=เท็จ
รีเฟรชKrb5Config=จริง
moduleBanner=จริง
storePass=จริง;
};
ลูกค้า spnego {
ต้องใช้ com.sun.security.auth.module.Krb5LoginModule;
};
เซิร์ฟเวอร์ spnego {
ต้องใช้ com.sun.security.auth.module.Krb5LoginModule
storeKey=จริง
useKeyTab=จริง
useTicketCache=เท็จ
keyTab="/app/jb-8443/krb5.keytab"
แก้จุดบกพร่อง = จริง
หลัก = "[email protected]"
doNotPrompt=จริง;
};
การปรับใช้ WebLogic มีเพียงส่วน spnego-client และ spnego-server ฉันเพิ่มส่วน com.sun.security.jgss.krb5.initiate และ com.sun.security.jgss.krb5.accept และหลังจากที่ฉันเพิ่มแล้ว ฉันก็สามารถเชื่อมต่อโดยใช้เคล็ดลับพลิก isInitiator
มีวิธีแก้ไขปัญหานี้หรือไม่? เช่น ข้ามการตรวจสอบสิทธิ์ล่วงหน้าหากไม่ได้เชื่อมต่อในวันนี้ หากมีบางสิ่งที่แคชไว้เพียง 24 ชั่วโมง ให้มันคงอยู่ได้นานขึ้นไหม
สิ่งเหล่านั้นเริ่มต้นและยอมรับชิ้นส่วนที่จำเป็นบนเซิร์ฟเวอร์ spnego หรือไม่