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

时间:2015-07-10 15:00:12

标签: active-directory ognl pingfederate

我正在尝试知道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时才返回true,否则它返回空。 我检查了组数组的长度,它只包含一个包含所有组的项目 但Active Directory将所有memberOf返回到一行,如CN = Managers,CN = Users,DC = company,DC = com,CN = Finance,CN = Users,DC = company,DC = com,CN = Employees,CN =用户,DC =公司,DC = com的

1 个答案:

答案 0 :(得分:0)

尝试以下方法:

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