Spring Security - получение роли пользователя - PullRequest
0 голосов
/ 20 сентября 2011

Я использую OpenDS для аутентификации моего приложения. Я могу успешно аутентифицировать пользователя, но не могу получить роли пользователя. Ниже приведена конфигурация в файле XML .....

<bean id="secondLdapProvider" class="org.springframework.security.ldap.authentication.LdapAuthenticationProvider">
<constructor-arg>
<bean class="org.springframework.security.ldap.authentication.BindAuthenticator">
<constructor-arg ref="contextSource" />
<property name="userSearch">
<bean id="userSearch" class="org.springframework.security.ldap.search.FilterBasedLdapUserSearch">
<constructor-arg index="0" value="ou=people"/>
<constructor-arg index="1" value="(uid={0})"/>
<constructor-arg index="2" ref="contextSource" />
</bean>
</property>
</bean>
</constructor-arg>
<constructor-arg>
<bean class="org.springframework.security.ldap.userdetails.DefaultLdapAuthoritiesPopulator">
<constructor-arg ref="contextSource" />
<constructor-arg value="ou=groups" />
<property name="groupSearchFilter" value="(member={0})"/>
<property name="rolePrefix" value="ROLE_"/>
<property name="searchSubtree" value="true"/>
<property name="convertToUpperCase" value="true"/>
</bean>
</constructor-arg>
</bean>

Пожалуйста, помогите мне получить роли.

1 Ответ

3 голосов
/ 20 сентября 2011
 Collection<? extends GrantedAuthority> roles = SecurityContextHolder.getContext().getAuthentication().getAuthorities();

Это вернет вам роли ("полномочия"), найденные DefaultLdapAuthoritiesPopulator

Фильтр поиска "(member = {0})" в ou "groups", т.е. роляхПолучаются путем поиска записей в «groups» ou с атрибутом «member», значение которого соответствует пользователям dn.В вашем примере ldif в комментарии ниже, похоже, что вы используете «uniqueMember» вместо «member» в качестве атрибута членства в группе,

Если вы внимательно прочитаете документацию (http://static.springsource.org/spring-security/site/docs/3.1.x/apidocs/org/springframework/security/ldap/userdetails/DefaultLdapAuthoritiesPopulator.html), вы увидите примерыldif и как различные атрибуты отображаются в популяторе.

...