Erro ao ler arquivo de configuração para Provedor de Autenticação JAAS na Primavera

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

  •  21-08-2019
  •  | 
  •  

Pergunta

Realmente rasgando meu cabelo fora em um presente. Eu tenho um provedor de autenticação JAAS configurado para o meu webapp Primavera. Eu criei uma definição de feijão para ele o seguinte:

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

Meu arquivo 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;
};

Quando a mola é inicializado, ele configura o feijão corretamente. Quando tento entrar em minha webapp, no entanto, eu recebo o seguinte erro:

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.

Não consigo encontrar esta mensagem em qualquer lugar erro no código fonte da Primavera, ea própria mensagem de erro não é útil a todos. Alguma idéia o que poderia estar causando isso?

Foi útil?

Solução 2

Encontrou a resposta. JAAS foi realmente carregar o arquivo de configuração corretamente, mas eu estava faltando um arquivo krb5.conf na minha JDK local. Este arquivo deve viver em:

$JAVA_HOME/lib/security

Exemplo:

[libdefaults]
  default_realm = DOMAIN.NET
  dns_lookup_kdc = true

[domain_realm]
  .domain.net = DOMAIN.NET

onde domain.net é o nome do domínio Kerberos, e DOMAIN.NET é o mesmo capitalizados apenas.

Outras dicas

Coloque o seu arquivo no classpath em vez de tentar lê-lo a partir do diretório WEB-INF. /webapps/myapp/WEB-INF/classes/login.conf - então em sua mudança de configuração da Primavera a linha para:

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

Eu não acho que você está recebendo um erro de Primavera, mas recebendo um erro de sistema de arquivos / java, você não tem permissão para ler o diretório WEB-INF.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top