خطأ في ملف التكوين القراءة للJAAS مزود المصادقة في الربيع
سؤال
وحقا دمر شعري على هذا واحد. لدي مزود مصادقة JAAS تكوين لبلدي تطبيق الويب الربيع. لقد خلق تعريف الفول لذلك كما يلي:
<beans:bean id="jaasAuthenticationProvider"
class="org.springframework.security.providers.jaas.JaasAuthenticationProvider">
<custom-authentication-provider />
<beans:property name="loginConfig" value="file:webapps/mywebapp/WEB-INF/login.conf"/>
<beans:property name="loginContextName" value="myWebapp"/>
<beans:property name="callbackHandlers">
<beans:list>
<beans:bean class="org.springframework.security.providers.jaas.JaasNameCallbackHandler"/>
<beans:bean class="org.springframework.security.providers.jaas.JaasPasswordCallbackHandler"/>
</beans:list>
</beans:property>
</beans:bean>
وملفي login.conf لJAAS:
myWebapp {
com.sun.security.auth.module.Krb5LoginModule
required
doNotPrompt=false
useTicketCache=true
debug=true;
};
com.sun.security.jgss.initiate {
com.sun.security.auth.module.Krb5LoginModule
required;
};
عند تهيئة الربيع، وتكوين الحبة بشكل صحيح. عندما أحاول تسجيل الدخول إلى بلدي تطبيق الويب، ومع ذلك، وأحصل على الخطأ التالي:
DEBUG webapp.AuthenticationProcessingFilter - Authentication request failed: org.springframework.security.AuthenticationServiceException: I/O error while reading configuration file.; nested exception is javax.security.auth.login.LoginException: I/O error while reading configuration file.
وأنا لا يمكن العثور على رسالة الخطأ هذه في أي مكان في التعليمات البرمجية المصدر الربيع، ورسالة الخطأ نفسها ليست مفيدة على الإطلاق. أي فكرة عما يمكن أن تسبب هذا؟
المحلول 2
وجدت الجواب. JAAS كان في الواقع تحميل ملف التكوين بشكل صحيح، ولكن كنت في عداد المفقودين ملف krb5.conf في بلدي JDK المحلي. يجب أن يعيش هذا الملف في:
$JAVA_HOME/lib/security
مثال:
[libdefaults]
default_realm = DOMAIN.NET
dns_lookup_kdc = true
[domain_realm]
.domain.net = DOMAIN.NET
وحيث domain.net هو اسم المجال Kerberos و DOMAIN.NET هو نفسه رسملتها فقط.
نصائح أخرى
ووضع الملف الخاص بك على CLASSPATH بدلا من محاولة قراءة من الدليل WEB-INF. /webapps/myapp/WEB-INF/classes/login.conf - ثم في التكوين الربيع بك تغيير الخط إلى:
<beans:property name="loginConfig" value="classpath:login.conf"/>
وأنا لا أعتقد أن كنت تحصل على خطأ الربيع، ولكن الحصول على خطأ الملفات / جافا، لا يسمح لك قراءة من الدليل WEB-INF.