2011-03-02 67 views
4

我試圖得到它使用Spring Security的支持嵌套LDAP角色一個Pentaho-BI服務器。我的組結構如下:是否有支持嵌套組的Spring Security DefaultLdapAuthoritiesPopulator實現?

  • PentahoAdmins(組)
    • 成員:域管理員
  • 域管理員(組)
    • 成員:用戶1
  • User1的(用戶)

我想驗證用戶1是PentahoAdmins基團的一部分,而無需用戶直接添加到該組。從我的在線調查來看,似乎Spring的DefaultLdapAuthoritiesPopulator不支持嵌套組。我相信可以創建一個支持組嵌套的子類,但是有人已經遇到了這個問題並將其發佈到了開源項目中?

+0

出於好奇,你有沒有找到一個解決這個?我也有同樣的問題,需要解決方案。 – cdeszaq 2011-09-21 16:52:09

+0

我沒有。我想我必須自己寫,但是我沒有在生產中使用Pentaho,所以我不必解決這個問題。 – bayfieldcoder 2011-09-21 17:22:16

+1

感謝您的回覆。既然看起來沒有任何東西存在,我會努力把自己放在一起,一旦完成就會回到這裏。 – cdeszaq 2011-09-21 18:15:02

回答

1

我在關於微軟的Active Directory中找到該article。搜索LDAP_MATCHING_RULE_IN_CHAIN或上面的鏈接將提供有關該主題的更多信息。這個想法是,你可以添加父組一組搜索過濾器,並在你的春季安全配置用戶的UID:

(&(uid={0})(memberof:1.2.840.113556.1.4.1941:=CN=parentGroup,DC=mycompany,DC=com)) 

=~ This user is {0} and is in a group that is a member of our parent group. 

我使用Spring LDAP只讀上下文搜索MS主動測試這目錄,但我還沒有在Spring Security中使用group-search-filter來確認。我希望這有幫助。

5

配置LDAP當局如下填充器,它會與嵌套組的工作:

<bean id="ldapAuthoritiesPopulator" class="org.springframework.security.ldap.userdetails.DefaultLdapAuthoritiesPopulator"> 
    <constructor-arg ref="ldapContextSource" /> 
    <constructor-arg value="OU=Resource,OU=Security Groups,OU=Administrative Area" /> <!-- group search base --> 
    <property name="groupRoleAttribute" value="cn" /> <!-- cn is default, but setting it anyway so it's clear --> 
    <property name="rolePrefix" value="" /> <!-- reset prefix, default is ROLE_ --> 
    <property name="convertToUpperCase" value="false"/> 
    <property name="searchSubtree" value="true" /> <!-- deep search --> 
    <property name="groupSearchFilter" value="(&amp;(&amp;(objectClass=group)(objectCategory=CN=Group,CN=Schema,CN=Configuration,DC=company,DC=local))(&amp;(cn=RG-TRADE*)(member:1.2.840.113556.1.4.1941:={0})))" /> 
</bean> 

的groupSearchFilter值表示:

objectClass=[group object class] AND objectCategory=[group object category] AND cn_name_of_group=RG-TRADE* AND member:here_magic_for_nested_groups=[user full dn]