archivo de configuración de lectura de error de proveedor de autenticación JAAS en la primavera

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

  •  21-08-2019
  •  | 
  •  

Pregunta

Realmente rasga mi pelo fuera de éste. Tengo un proveedor de autenticación JAAS configurado para mi aplicación web de Primavera. He creado una definición de frijol de la siguiente manera:

 <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>

Mi archivo login.conf para 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;
};

Cuando la primavera se inicia, configura el frijol correctamente. Cuando intento acceder a mi aplicación web, sin embargo, me sale el siguiente error:

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.

No puedo encontrar este mensaje de error en cualquier parte del código fuente de la primavera, y el mensaje de error en sí mismo no es útil en absoluto. ¿Alguna idea de lo que podría estar causando esto?

¿Fue útil?

Solución 2

encontrado la respuesta. JAAS en realidad estaba cargando el archivo de configuración correctamente, pero me faltaba un archivo krb5.conf en mi JDK local. Este archivo debe vivir en:

$JAVA_HOME/lib/security

Ejemplo:

[libdefaults]
  default_realm = DOMAIN.NET
  dns_lookup_kdc = true

[domain_realm]
  .domain.net = DOMAIN.NET

donde domain.net es el nombre del dominio de Kerberos, y DOMAIN.NET es el mismo solamente en mayúsculas.

Otros consejos

Ponga su archivo en la ruta de clase en lugar de tratar de leer desde el directorio WEB-INF. /webapps/myapp/WEB-INF/classes/login.conf - a continuación, en la configuración del resorte cambiar la línea a:

    <beans:property name="loginConfig" value="classpath:login.conf"/>

No creo que está recibiendo un error de la primavera, pero conseguir un error de sistema de archivos / java, no se le permite leer desde el directorio WEB-INF.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top