Errore file di configurazione di lettura per JAAS provider di autenticazione in primavera

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

  •  21-08-2019
  •  | 
  •  

Domanda

Davvero strappa i capelli fuori su questo. Ho un provider di autenticazione JAAS configurato per la mia primavera webapp. Ho creato una definizione di fagioli per come segue:

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

Il mio file login.conf per 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;
};

Quando Primavera inizializza, si configura il fagiolo correttamente. Quando tento di accedere al mio webapp, tuttavia, ottengo il seguente errore:

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.

Non riesco a trovare questo messaggio di errore in qualsiasi parte del codice sorgente di primavera, e il messaggio di errore in sé non è utile a tutti. Qualche idea di cosa potrebbe causare questo?

È stato utile?

Soluzione 2

trovato la risposta. JAAS è stato effettivamente caricando il file di configurazione in modo corretto, ma mi mancava un file krb5.conf nella mia JDK locale. Questo file deve vivere in:

$JAVA_HOME/lib/security

Esempio:

[libdefaults]
  default_realm = DOMAIN.NET
  dns_lookup_kdc = true

[domain_realm]
  .domain.net = DOMAIN.NET

dove domain.net è il nome del dominio Kerberos e DOMAIN.NET è lo stesso capitalizzati solo.

Altri suggerimenti

Mettere il vostro file sul percorso di classe piuttosto che cercando di leggere dalla directory WEB-INF. /webapps/myapp/WEB-INF/classes/login.conf - allora nella vostra primavera config cambiare la linea:

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

Non credo che si stanno ottenendo un errore di primavera, ma ottenere un errore di filesystem / java, non ti è permesso di leggere dalla directory WEB-INF.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top