Tôi đang chuyển một ứng dụng từ WebLogic sang JBoss EAP 6.4 và tôi gần như đã làm cho nó hoạt động. Vấn đề là tôi chỉ có thể làm cho xác thực Kerberos hoạt động nếu tôi chơi với thuộc tính isInitiator trong tệp độc lập-full-ha.xml của mình cho máy chủ spnego.
Nếu tôi đặt isInitiator=true, thì tôi gặp lỗi khi bắt đầu ứng dụng "Thông tin xác thực trước không hợp lệ".
Nếu tôi đặt isInitiator=false, thì tôi nhận được "NTLM được chỉ định. Đã hạ cấp xuống Xác thực cơ bản (và/hoặc SSL) nhưng không hỗ trợ hạ cấp" khi tôi truy cập trang.
Tuy nhiên, nếu sau đó tôi quay lại isInitiator=true sau khi nó bị lỗi với false, thì nó sẽ hoạt động trong một ngày.
Nó trở lại "Thông tin xác thực trước không hợp lệ" vào ngày hôm sau. Tôi phải thử kết nối lại với isInitiator=false để nó hoạt động trở lại.
standalone-full-ha.xaml của tôi trông như thế này:
<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 có:
com.sun.security.jgss.krb5.initiate {
Yêu cầu com.sun.security.auth.module.Krb5LoginModule
doNotPrompt=true
hiệu trưởng="[email protected]"
useKeyTab=true
useTicketCache=false
gỡ lỗi = đúng
keyTab="/app/jb-8443/krb5.keytab"
storeKey=true;
};
com.sun.security.jgss.krb5.accept {
Yêu cầu com.sun.security.auth.module.Krb5LoginModule
doNotPrompt=true
hiệu trưởng="[email protected]"
useKeyTab=true
keyTab="/app/jb-8443/krb5.keytab"
storeKey=true
useTicketCache=false
isInitiator=false
refreshKrb5Config=true
mô-đunBanner=true
storePass=true;
};
spnego-client {
Yêu cầu com.sun.security.auth.module.Krb5LoginModule;
};
máy chủ spnego {
Yêu cầu com.sun.security.auth.module.Krb5LoginModule
storeKey=true
useKeyTab=true
useTicketCache=false
keyTab="/app/jb-8443/krb5.keytab"
gỡ lỗi = đúng
hiệu trưởng="[email protected]"
doNotPrompt=true;
};
Việc triển khai WebLogic chỉ có các phần spnego-client và spnego-server. Tôi đã thêm các phần com.sun.security.jgss.krb5.initiate và com.sun.security.jgss.krb5.accept và sau khi thêm chúng, tôi có thể kết nối bằng thủ thuật lật isInitiator.
Có cách nào để giái quyết vấn đề này không? Chẳng hạn như bỏ qua xác thực trước nếu nó không được kết nối hôm nay? Nếu một cái gì đó được lưu vào bộ nhớ cache chỉ trong 24 giờ, hãy giữ nó tồn tại lâu hơn?
Những bộ phận khởi tạo và chấp nhận đó có cần thiết trên máy chủ spnego không?