簡體   English   中英

Spring Security-檢索用戶角色

[英]Spring Security - Retrieving Role of a User

我正在使用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>

請幫助我獲得角色。

 Collection<? extends GrantedAuthority> roles = SecurityContextHolder.getContext().getAuthentication().getAuthorities();

這將返回DefaultLdapAuthoritiesPopulator找到的角色(“權限”)

搜索過濾器在ou“組”中為“(member = {0})”,即,通過在“組” ou中搜索具有“成員”屬性且其值與用戶dn匹配的條目來檢索角色。 在以下注釋的示例ldif中,您似乎使用“ uniqueMember”代替“ member”作為組成員資格屬性,

如果您仔細閱讀了文檔(http://static.springsource.org/spring-security/site/docs/3.1.x/apidocs/org/springframework/security/ldap/userdetails/DefaultLdapAuthoritiesPopulator.html),您將看到示例ldif以及不同屬性在填充器中的映射方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM