从Jenkins脚本化管道搜索LDAP

时间:2019-09-21 22:04:51

标签: jenkins groovy

我们将GitHub帐户存储在AD User属性之一中。从GitHub接收请求请求挂机时,我想基于GitHub帐户找到一个用户,并将测试结果通知给用户。该怎么做?

1 个答案:

答案 0 :(得分:0)

如果我对您的理解正确,则希望通过另一个用户属性获取电子邮件属性值。无法测试以下代码,但应该可以让您了解如何执行此操作。

import javax.naming.directory.InitialDirContext
import javax.naming.directory.DirContext

Properties ldapProps = [
    'java.naming.factory.initial'        :'com.sun.jndi.ldap.LdapCtxFactory',
    'java.naming.security.authentication':'simple',
    'java.naming.provider.url'           :'ldap://ldap-host:389',
    'java.naming.security.principal'     :'ldap-access-username',
    'java.naming.security.credentials'   :'ldap-access-password',
] as Properties


String user          = 'user-to-search'
String attr          = 'mail'           //attribute name for email could be different in your ldap
String ldapFilter    = "CN=${user}"     //put instead of `CN` git attribute
String[] attrValues  = []               //array because could be several values for one attribute

DirContext ldapCtx = new InitialDirContext(ldapProps)
ldapCtx.search("", ldapFilter, null).each{ldapUser->
    def ldapAttr = ldapUser.getAttributes().get(attr)
    attrValues = ldapAttr?.getAll()?.collect{it.toString()}
}
ldapCtx.close()
println "found values: $attrValues"
相关问题