2012-11-21 4 views
0

J'utilise la sécurité à ressort pour l'authentification des utilisateurs.Spécification du fournisseur d'authentification personnalisée

J'ai créé un fournisseur d'authentification personnalisé et implémentation de l'interface UserDetails.

Après est application context.xml

<beans:bean id="authenticationProvider" class="com.utils.UserAuthenticationProvider" > 
</beans:bean> 

<beans:bean id="passwordEncoder" class="com.utils.PasswordUtil"/> 
<beans:bean id="saltSource" class="org.springframework.security.authentication.dao.ReflectionSaltSource"> 
    <beans:property name="userPropertyToUse" value="lastChangeDate" /> 
</beans:bean> 

<authentication-manager alias="authenticationManager" > 
    <authentication-provider user-service-ref="userDetailsService" > 
     <password-encoder ref="passwordEncoder"> 
      <salt-source ref="saltSource" /> 
     </password-encoder> 
    </authentication-provider> 
</authentication-manager> 
<beans:bean id="userDetailsService" class="com.service.impl.UserDetailsServiceImpl" /> 

Je ne suis pas en mesure de lier mon fournisseur d'authentification personnalisé pour l'authentification balise de gestionnaire.

J'ai essayé d'utiliser la balise "custom-authenitication-provider", mais il semble que cette balise ne soit pas présente à partir de Spring 3.

Aidez-nous s'il vous plaît. Faites-moi savoir si d'autres informations sont requises

+1

Copie possible de [spring-security-custom-authentification-et-encodage de mot de passe] (http://stackoverflow.com/questions/7658853/spring-security-custom-authentication-and-password-encoding) – Ravi

Répondre

0

Vous pouvez essayer ceci de la manière suivante.

<bean id="authenticationFilter" class="org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter" 
     p:authenticationManager-ref="customAuthenticationManager" 
     p:authenticationFailureHandler-ref="customAuthenticationFailureHandler" 
     p:authenticationSuccessHandler-ref="customAuthenticationSuccessHandler" 
       p:sessionAuthenticationStrategy-ref="sas"/> 

    <bean id="customAuthenticationManager" class="com.xxx.yyy.zzz.security.filters.CustomAuthenticationFilter"> 
     <constructor-arg type="org.hibernate.SessionFactory" ref="sessionFactory"/> 
    </bean> 

--Edit--

Si vous voulez juste utiliser le fournisseur d'authentification personnalisé, vous pouvez spécifier la manière suivante.

<security:authentication-manager> 
     <security:authentication-provider ref="authenticationProvider"> 
     </security:authentication-provider> 
    </security:authentication-manager> 

Espérons que cela vous aide. À votre santé.

+0

I ne veut pas créer un nouveau gestionnaire d'authentification. Je veux juste me référer au fournisseur d'auth que j'ai créé. –

+0

voir la section d'édition de ma réponse. –

+0

J'ai essayé cette approche mais le problème avec l'approche est que je ne peux pas spécifier l'attribut user-service-ref, car je veux crypter le mot de passe entrant avec mon algorithme de cryptage créé avant de faire correspondre le mot de passe avec DB. –

Questions connexes