Active directory PingFederate使用ognl表达式获取安全组

Active directory PingFederate使用ognl表达式获取安全组,active-directory,ognl,pingfederate,Active Directory,Ognl,Pingfederate,我试图知道广告中的某个用户是否在某个特定的安全组中,我尝试使用中的示例并对其进行更改以满足我的需要 #admin="", #groups = #this.get("ds.LDAP.memberOf")!=null?#this.get("ds.LDAP.memberOf").getValues() : {}, #i= 0, #groups.{ #group = new javax.naming.ldap.LdapName(#groups[#i]), #cn = #group.getRd

我试图知道广告中的某个用户是否在某个特定的安全组中,我尝试使用中的示例并对其进行更改以满足我的需要

#admin="",
#groups = #this.get("ds.LDAP.memberOf")!=null?#this.get("ds.LDAP.memberOf").getValues() : {},
#i= 0,
#groups.{
#group = new javax.naming.ldap.LdapName(#groups[#i]),  
    #cn = #group.getRdn(#group.size() - 1).getValue().toString(),  
    #admin=#cn.equals("Managers")?true:"",  
    #i = #i + 1 },  
#admin=(#admin!="")?true:""
但是我的脚本只有在我正在搜索的CN位于列表的第一位时才返回true,否则返回空。 我检查了组数组的长度,它只是一个包含所有组的项 但Active Directory将返回一行中的所有成员,如CN=Managers、CN=Users、DC=company、DC=com、CN=Finance、CN=Users、DC=company、DC=com、CN=Employees、CN=Users、DC=company、DC=com .

请尝试以下操作:

#memberOf=#this.get("ds.LDAP.memberOf").toString(),#idx=#memberOf.indexOf("GROUPNAME"), #result = #idx >= 0 ? "TRUE": "FALSE"

谢谢Eric,我做到了。我只添加了安全组的全名,比如CN=Managers、CN=Users、DC=company、DC=com,而不仅仅是Managers