2017-01-29 21 views
0

Для тестовой среды, у меня есть файл .ldif предоставить в ben пользователь, ADMIN роль, так как эта роль требуют моей безопасности в Кoнфигурировании Spring: .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 группа может быть записана в виде adMIN и ADMin и тест еще успешно.

4 Замена admin группы по user группы для пользователя, делает тест не с 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) записи в группе определяются как игнорирование case (DN «spec» https://tools.ietf.org/html/rfc4514).

Лично я считаю это ошибкой, что hasRole (..) подходит в зависимости от регистра. Однако я думаю, что это так, потому что DefaultLdapAuthoritiesPopulator по умолчанию convertToUpperCase к правда