2014-03-26 60 views
0

我正在嘗試將我們當前的網絡應用程序遷移到retLDive角色和身份驗證以及openLDAP系統。我在動態組(groupOfURLs)和openLDAP中遇到了一些問題。我使用OpenLDAP 2.4.33和Spring 3.2。OpenLDAP中的動態組問題

我已經驗證了我的身份驗證成功,但是現在,我在設置系統時使用動態組疊加層爲角色使用動態組時存在問題。

在彈簧端,我試圖使用一個DefaultLdapAuthoritiesPopulator和groupSearchFilter =「(member = {0})」。我遇到的問題是,春天不會找到我的動態組成員的任何但是它可以找到靜態組的成員(是groupofNames)(。

這似乎並不成爲一個春天問題,因爲我在使用ldapsearch命令同樣的問題。我遇到的問題是由例子最好的說明。

我使用以下LDIF

dn: ou=Groups,dc=myapp,dc=com 
objectClass: top 
objectClass: organizationalUnit 
ou: Groups 


dn: ou=Users,dc=myapp,dc=com 
objectClass: top 
objectClass: organizationalUnit 
ou: Users 


dn: uid=userA,ou=Users,dc=myapp,dc=com 
objectClass: top 
objectClass: person 
objectClass: organizationalPerson 
objectClass: inetOrgPerson 
uid: userA 
cn: test-forename 
sn: test-surname 
mail: [email protected] 
userPassword:: e1NTSEF9bVpJVGxZRlFYdnhBemhLQkdxWll0VnlRQjRUdjBaelhEZkpaZnc9PQ== 


dn: uid=userB,ou=Users,dc=myapp,dc=com 
objectClass: top 
objectClass: person 
objectClass: organizationalPerson 
objectClass: inetOrgPerson 
uid: userB 
cn: test-forename 
sn: test-surname 
mail: [email protected] 
userPassword:: e1NTSEF9bVpJVGxZRlFYdnhBemhLQkdxWll0VnlRQjRUdjBaelhEZkpaZnc9PQ== 


dn: cn=DynamicGroup,ou=Groups,dc=myapp,dc=com 
cn: DynamicGroup 
objectClass: top 
objectClass: groupOfURLs 
ou: Groups 
memberURL: ldap:///ou=Users,dc=myapp,[email protected] 


dn: cn=StaticGroup,ou=Groups,dc=myapp,dc=com 
cn: StaticGroup 
objectClass: top 
objectClass: groupofnames 
ou: Groups 
member: uid=userA,ou=Users,dc=myapp,dc=com 

這就造成了兩個用戶和兩組,一靜one dynamic。

如果我做一個簡單的搜索,我得到

ldapsearch.exe -v -x -h localhost -p 389 -D "cn=admin,dc=myapp,dc=com" -w secret -LL -b "ou=Groups,dc=myapp,dc=com" "(objectClass=*)" dn member 

在此我使用( 「(objectClass的= *)」 DN成員),我得到以下結果

ldap_initialize(ldap://localhost:389) 
filter: (objectClass=*) 
requesting: dn member 
version: 1 

dn: ou=Groups,dc=myapp,dc=com 

dn: cn=DynamicGroup,ou=Groups,dc=myapp,dc=com 
member: uid=dbunit,ou=Users,dc=myapp,dc=com 
member: uid=userA,ou=Users,dc=myapp,dc=com 
member: uid=userB,ou=Users,dc=myapp,dc=com 

dn: cn=StaticGroup,ou=Groups,dc=myapp,dc=com 
member: uid=dbunit,ou=Users,dc=myapp,dc=com 

顯然,這種搜索說明該查詢返回靜態和動態組的結果。這表明它已正確配置並且它具有一個屬性成員。

我遇到的問題是當我在成員attributrs上添加一個過濾器。

ldapsearch.exe -v -x -h localhost -p 389 -D "cn=admin,dc=myapp,dc=com" -w secret -LL -b "ou=Groups,dc=myapp,dc=com" "(member=*)" dn member 

在這種情況下,我應用過濾器「(member = *)」。

ldap_initialize(ldap://localhost:389) 
filter: (member=*) 
requesting: dn member 
version: 1 

dn: cn=StaticGroup,ou=Groups,dc=myapp,dc=com 
member: uid=dbunit,ou=Users,dc=myapp,dc=com 

在這種情況下,返回的所有內容都是靜態組。看起來,過濾器似乎沒有訪問成員屬性。

有沒有其他人來過這個問題?

任何幫助,將不勝感激。

+1

我不相信你可以應用其他過濾器動態組,它本身就是一個過濾器。關於這個話題還有另一個最近的問題似乎證明了這一點。 – EJP

+0

是的,我剛剛看到,我張貼後(http://stackoverflow.com/questions/4603570/openldap-dynlist-posixgroup)。我希望有人可能有一個很好的解決方法。在帖子中他們提到使用自動分組覆蓋,所以我開始研究這一點。 –

回答

0

它很明顯,這不是如何動態組不工作。最後,我決定使用靜態組。

一個很好的答案,可以發現:stackoverflow.com/questions/4603570/openldap-dynlist-posixgroup