2017-01-29 60 views
0

對於測試環境的管理員角色給用戶,我有一個.ldif文件授予ben用戶的ADMIN角色,因爲這個角色是我的春節安全configuation要求:.hasRole("ADMIN").anyRequest()授予在ldif文件

這裏是.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 

測試環境Spring Security的配置如下:

有幾點看法:

1的測試成功並且用戶被認證和認證爲具有管理員角色。

2-如果不是將角色認證配置爲.hasRole("ADMIN").anyRequest()我將其作爲.hasRole("admin").anyRequest(),那麼在測試中給出的用戶角色將不被接受,並且測試在認證時將以403(而不是401)失敗。

3-情況似乎並不在.ldif文件無關緊要的admin組可以寫成adMINADMin和測試仍然是成功的。

4-由user組爲用戶更換admin組,使測試失敗,一個403,也就是說,用戶需要管理員角色先登錄。

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

怎麼來的案件在.ldif文件中無關緊要,並且在configure方法中有問題?

回答

0

根據目錄服務器架構(即定義的屬性和對象類),構建組條目的可分辨名稱(DN)的屬性定義爲區分大小寫(DN「spec」https://tools.ietf.org/html/rfc4514)。

我個人認爲它是一個bug,hasRole(..)以區分大小寫的方式匹配。不過,我認爲是這樣,因爲DefaultLdapAuthoritiesPopulator默認爲convertToUpperCase真正