2011-09-20 4 views
0

내 응용 프로그램 인증에 OpenDS를 사용하고 있습니다. 사용자를 성공적으로 인증 할 수는 있지만 사용자의 역할을 얻을 수는 없습니다. 다음은스프링 보안 - 사용자 역할 가져 오기

<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> 

는 역할을 얻기 위해 제발 도와주세요 ..... XML 파일의 구성입니다.

답변

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

당신에게 DefaultLdapAuthoritiesPopulator에 의해 발견 역할 ("기관")을 반환합니다 그

검색 필터는 "(멤버 = {0})"OU의 "그룹", 즉 역할이있다 사용자 dn과 값이 일치하는 "member"속성이있는 "groups"ou의 항목을 검색하여 검색됩니다. 아래의 예에서 ldif 예제에서 그룹 구성원 속성으로 "member"대신 "uniqueMember"를 사용하는 것처럼 보입니다.

설명서를주의 깊게 읽는다면 (http://static.springsource.org/ spring-security/site/docs/3.1.x/apidocs/org/springframework/security/ldap/userdetails/DefaultLdapAuthoritiesPopulator.html) ldif의 예제와 populate에 다른 속성이 어떻게 매핑되는지 볼 수있다.

+0

예,하지만 목록의 길이를 확인할 때 어떤 역할도하지 않습니다. 다음은 OpenDS의 LDIF이며 사용자가 가진 역할입니다. DN : CN = role1, OU = 그룹, DC = 아닐, DC = COM CN이 : 최고 방법 objectClass : objectclass와 role1 groupOfUniqueNames가 의 uniqueMember : UID = user.2, OU = 사람들, DC = 아닐, DC = COM uniqueMember : user1, ou = 사용자, dc = anil, dc = com 여기서 user1에 대한 role1이 제공됩니다. 그러나 user1에 대한 역할을 얻으려고 할 때 어떤 역할도 반환하지 않습니다. XML에서 일부 구성 매개 변수가 누락되었다고 느낍니다. –

+0

위의 업데이트를 참조하십시오. – pap