Erreur fichier de configuration de lecture pour JAAS fournisseur d'authentification au printemps

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

  •  21-08-2019
  •  | 
  •  

Question

Vraiment déchirant mes cheveux sur celui-ci. J'ai un fournisseur d'authentification JAAS configuré pour mon Spring webapp. J'ai créé une définition de haricot pour comme suit:

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

Mon fichier login.conf pour 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;
};

Quand le printemps initialise, il configure correctement le haricot. Lorsque je tente de me connecter à mon webapp, cependant, je reçois l'erreur suivante:

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.

Je ne trouve pas ce message d'erreur partout dans le code source de printemps, et le message d'erreur lui-même est pas utile du tout. Toute idée de ce que pourrait être la cause?

Était-ce utile?

La solution 2

trouvé la réponse. JAAS chargeait effectivement correctement le fichier de configuration, mais je manque un fichier krb5.conf dans mon JDK local. Ce fichier doit vivre dans:

$JAVA_HOME/lib/security

Exemple:

[libdefaults]
  default_realm = DOMAIN.NET
  dns_lookup_kdc = true

[domain_realm]
  .domain.net = DOMAIN.NET

où domain.net est le nom du domaine Kerberos et DOMAIN.NET est le même que majuscule.

Autres conseils

Mettez votre fichier sur le chemin de classe plutôt que d'essayer de le lire à partir du répertoire WEB-INF. /webapps/myapp/WEB-INF/classes/login.conf - puis dans votre config de printemps changer la ligne:

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

Je ne pense pas que vous obtenez une erreur de printemps, mais obtenir une erreur système de fichiers / java, vous n'êtes pas autorisé à lire à partir du répertoire WEB-INF.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top