2009-05-28 8 views
3

Je suis nouveau au printemps, donc cette question peut sembler si évidente. J'essaye d'implémenter la sécurité de printemps et mon exigence est d'authentifier le nom d'utilisateur/mot de passe contre un serveur LDAP et une fois que l'utilisateur est authentifié, j'ai besoin de récupérer les rôles d'utilisateur d'une base de données relationnelle. Est-il possible de le faire en sécurité de printemps?Comment faire l'authentification LDAP et l'autorisation de base de données dans la sécurité de printemps?

Répondre

4

Oui.

Le gestionnaire d'authentification ldap intégré divise l'authentification et l'autorisation d'un utilisateur en deux parties Vous pouvez configurer un gestionnaire d'authentification basé sur LDAP comme ci-dessous.

<bean id="authenticationManager" class="org.acegisecurity.providers.ProviderManager"> 
    <property name="providers"> 
     <list> 
      <ref local="ldapAuthenticationProvider"/> 
     </list> 
    </property> 
</bean> 

Le fournisseur d'authentification est configuré comme ceci.

<bean id="ldapAuthenticationProvider" class="org.acegisecurity.providers.ldap.LdapAuthenticationProvider"> 
    <constructor-arg><ref local="authenticator"/></constructor-arg> 
    <constructor-arg><ref local="populator"/></constructor-arg> 
    <property name="userCache"><ref local="userCache"/></property> 
</bean> 

Je ne sais pas s'il y a un populator intégré qui fera ce que vous voulez, mais vous pouvez développer votre propre un si nécessaire.

+1

Vous pouvez utiliser UserDetailsServiceLdapAuthoritiesPopulator pour déléguer à un UserDetailsService standard. Cela fera exactement ce dont Veera a besoin. –

Questions connexes