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

PingFederate use ognl expression to get security group

我想知道 AD 中的用户是否在特定的安全组中,我尝试使用 https://www.pingidentity.com/en/blog/2013/07/25/looping_in_ognl.html 中的示例并更改它以满足我的需要

#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 不是列表中的第一个时 return 为真,否则它 return 为空。 我检查了组数组的长度,它只是包含所有组的一项 但是 Active Directory return 将所有成员集中在一行中,例如 CN=Managers,CN=Users,DC=company,DC=com, CN=Finance,CN=Users,DC=company,DC=com, CN=员工,CN=用户,DC=公司,DC=com .

尝试以下操作:

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