2017-01-29 4 views
0

Pour un environnement de test, j'ai un fichier .ldif à accorder à l'utilisateur ben, le rôle ADMIN, que ce rôle est tenu par ma sécurité Spring configuation: .hasRole("ADMIN").anyRequest().L'octroi d'un rôle d'administrateur à un utilisateur dans un fichier LDIF

Voici le contenu du fichier .ldif:

dn: ou=groups,dc=springframework,dc=org 
objectclass: top 
objectclass: organizationalUnit 
ou: groups 

dn: ou=people,dc=springframework,dc=org 
objectclass: top 
objectclass: organizationalUnit 
ou: people 

dn: uid=ben,ou=people,dc=springframework,dc=org 
objectclass: top 
objectclass: person 
objectclass: organizationalPerson 
objectclass: inetOrgPerson 
cn: Ben LeHeros 
sn: Ben 
uid: ben 
userPassword: {SHA}nFCebWjxfaLbHHG1Qk5UU4trbvQ= 

dn: uid=toto,ou=people,dc=springframework,dc=org 
objectclass: top 
objectclass: person 
objectclass: organizationalPerson 
objectclass: inetOrgPerson 
cn: Toto LeHeros 
sn: Toto 
uid: toto 
userPassword: totopass 

dn: cn=adMIN,ou=groups,dc=springframework,dc=org 
objectclass: top 
objectclass: groupOfNames 
cn: ADMin 
uniqueMember: uid=ben,ou=people,dc=springframework,dc=org 

dn: cn=user,ou=groups,dc=baeldung,dc=com 
objectclass: top 
objectclass: groupOfNames 
cn: user 
member: uid=toto,ou=people,dc=springframework,dc=org 

L'environnement de test configuration Spring Security est la suivante:

Il y a quelques observations:

1- Le test est réussie et l'utilisateur est authentifié et accrédité comme ayant le rôle d'administrateur. 2- Si au lieu de configurer l'accréditation de rôle comme .hasRole("ADMIN").anyRequest() je le fais comme .hasRole("admin").anyRequest() alors le rôle d'utilisateur donné dans le test n'est pas accepté et le test échoue avec un 403 (pas un 401) lors de l'authentification.

3- Le cas ne semble pas à la matière dans le fichier .ldif que le groupe admin peut être écrit comme adMIN et ADMin et le test est toujours un succès.

4- Remplacement du groupe admin par un groupe user pour l'utilisateur, fait le test échoue avec un 403, qui est, l'utilisateur a besoin d'un rôle d'administrateur être connecté.

dn: cn=user,ou=groups,dc=springframework,dc=org 
objectclass: top 
objectclass: groupOfNames 
cn: user 
uniqueMember: uid=ben,ou=people,dc=springframework,dc=org 

Comment se fait la cas n'a pas d'importance dans le fichier .ldif et des questions dans la méthode configure?

Répondre

0

Par schéma de serveur d'annuaire (qui sont les attributs et les classes d'objet définis), les attributs pour créer le nom distinctif de l'entrée de groupe sont définis comme case-ignore (DN "spec" https://tools.ietf.org/html/rfc4514).

Personnellement, je considère comme un bug que le hasRole (..) correspond à la casse. Cependant, je pense que c'est le cas parce que le DefaultLdapAuthoritiesPopulator par défaut convertToUpperCase-vrai