La manipulation des rôles lorsqu'ils sont authentifiés à active directory avec ressort de sécurité 3.1
Je suis en train d'utiliser une authentification avec Active directory à l'aide de Printemps de Sécurité 3.1.
Je reçois authentifié et tout est bien.
<sec:ldap-server id="ldapServer" url="ldap://ldap/dc=sub,dc=domain,dc=com" port="389" />
<sec:authentication-manager erase-credentials="true" >
<sec:authentication-provider ref="ldapActiveDirectoryAuthProvider" />
</sec:authentication-manager>
<bean id="ldapActiveDirectoryAuthProvider"
class="org.springframework.security.ldap.authentication.ad.ActiveDirectoryLdapAuthenticationProvider">
<constructor-arg value="domain" />
<constructor-arg value="ldap://server:389/"/>
</bean>
Maintenant à la question. Comment gérer les rôles de l'utilisateur, de sorte que je peux configurer mes filtres?
par exemple.
<sec:intercept-url pattern="/**" access="ROLE_USER"/>
Solution
J'ai trouvé comment le faire en utilisant la UserDetailContextMapper et la carte de mes groupes d'ANNONCES pour ROLE_USER,ROLE_ADMIN etc.
<bean id="ldapActiveDirectoryAuthProvider"
class="org.springframework.security.ldap.authentication.ad.ActiveDirectoryLdapAuthenticationProvider">
<constructor-arg value="domain" />
<constructor-arg value="ldap://host:389/"/>
<property name="userDetailsContextMapper" ref="tdrUserDetailsContextMapper"/>
<property name="useAuthenticationRequestCredentials" value="true"/>
</bean>
<bean id="tdrUserDetailsContextMapper" class="com.bla.bla.UserDetailsContextMapperImpl"/>
Mappeur de classe:
public class UserDetailsContextMapperImpl implements UserDetailsContextMapper, Serializable{
private static final long serialVersionUID = 3962976258168853954L;
@Override
public UserDetails mapUserFromContext(DirContextOperations ctx, String username, Collection<? extends GrantedAuthority> authority) {
List<GrantedAuthority> mappedAuthorities = new ArrayList<GrantedAuthority>();
for (GrantedAuthority granted : authority) {
if (granted.getAuthority().equalsIgnoreCase("MY USER GROUP")) {
mappedAuthorities.add(new GrantedAuthority(){
private static final long serialVersionUID = 4356967414267942910L;
@Override
public String getAuthority() {
return "ROLE_USER";
}
});
} else if(granted.getAuthority().equalsIgnoreCase("MY ADMIN GROUP")) {
mappedAuthorities.add(new GrantedAuthority() {
private static final long serialVersionUID = -5167156646226168080L;
@Override
public String getAuthority() {
return "ROLE_ADMIN";
}
});
}
}
return new User(username, "", true, true, true, true, mappedAuthorities);
}
@Override
public void mapUserToContext(UserDetails arg0, DirContextAdapter arg1) {
}
}
Hey, pouvez-vous m'indiquer guide pour bien démarrer avec ldap. Je trouve leur documentation inégale. IE parle des fichiers de configuration, mais je n'ai aucune idée de où les mettre
OriginalL'auteur heldt | 2012-01-12
Vous devez vous connecter pour publier un commentaire.
Les rôles dans le beans.xml doit être une correspondance exacte du nom commun (CN) de la memberOf valeur de l'attribut. Vous devriez lire un tutoriel sur le répertoire de base.
Dire que cet utilisateur:
CN=Michael-O,OU=Users,OU=department,DC=sub,DC=company,DC=net
Dans son contexte, de ce memberOf valeur
CN=Group Name,OU=Permissions,OU=Groups,OU=department,DC=sub,DC=company,DC=net
La Fève de localiser ce memberOf de la valeur et de l'extrait de
Group Name
. Vous beans.xml a avoir exactement cette valeur.OriginalL'auteur Michael-O
Vous pouvez également injecter une
GrantedAuthoritiesMapper
qui a été introduit en 3.1 comme une stratégie générale pour modifier les autorités. De Plus, vous pourriez vouloir utiliserSimpleGrantedAuthority
pour laGrantedAuthority
mise en œuvre. Sinon, vous pouvez utiliser un enum puisque vous avez un ensemble fixe de valeurs:ldap-authentication-provider
etuser-context-mapper-ref
il est possible de mettre en place la configuration de ldap, en quelques lignes, il m'a fallu un certain temps pour la trouver.Vous pouvez lier ou d'écrire un exemple complet? Je l'ai utilisé mais regardez comme mes Utilisateurs ont encore de Groupe Active Directory en tant qu'autorités
OriginalL'auteur Shaun the Sheep