خطأ في ملف التكوين القراءة للJAAS مزود المصادقة في الربيع

StackOverflow https://stackoverflow.com/questions/1065684

  •  21-08-2019
  •  | 
  •  

سؤال

وحقا دمر شعري على هذا واحد. لدي مزود مصادقة 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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top