美文网首页
Jenkins上集成多个LDAP服务器认证

Jenkins上集成多个LDAP服务器认证

作者: Judy_cf13 | 来源:发表于2020-08-12 10:41 被阅读0次

    1. 安装LDAP插件
    [https://plugins.jenkins.io/ldap/]
    2. 添加一个Jenkins LDAP配置
    Server:这里填写LDAP server的地址即可
    root DN: 这里填写你需要的base路径, 如果这里不填则勾选Allow blank rootDN,但是user search base和group search base则不能为空,否则会报找不到object的错误
    User search base:可以不填,则会查找改root DN下的所有用户
    User search filter:一般包含三种, uid={0}; cn={0}; sAMAccountName={0}, 如果不确定LDAP Server怎样设置的,则可以依次尝试
    Group search base: 可以不填,则会查找改root DN下的所有组
    Manager DN:认证查询该LDAP服务器的用户DN,包括该用户的完整CN, OU, DC
    Manager Password: 上述用户的密码
    其他可以保持默认配置
    3. 添加另外一个LDAP Server 的配置
    点击Add Server, 可以按照上述配置继续配置,这两个可以是不同的配置
    配置多个ldap时建议勾选上Ignore if unavailable,这样如果其中一个ldap server不可用,会尝试使用下一些个ldap server。
    4. 配置过程中遇到的问题
    4.1 错误日志:
    User lookup: failed for user "your_username" LdapCallback;null; nested exception is javax.naming.PartialResultException [Root exception is javax.naming.CommunicationException: dc1.dc2.dc3:389 [Root exception is java.net.UnknownHostException: dc1.dc2.dc3]] LDAP Group lookup: could not verify.
    其中your_username是你试图登陆的一个AD用户; dc1.dc2.dc3是你设置的DC=dc1, DC=dc2, DC=dc3,我这里出现了该问题是因为LDAP server我提供的是一个IP地址
    原因:该问题是找不到 dc1.dc2.dc3该域名,请在AD上配置域名解析 your_LDAP_IP 到dc1.dc2.dc3或者临时在系统的/etc/hosts文件中添加该域名解析

    4.2 错误日志:
    LdapCallback;LDAP response read timed out, timeout used:60000ms.; nested exception is javax.naming.NamingException: LDAP response read timed out, timeout used:60000ms.; remaining name ''
    这个问题是因为connection pool的连接有问题,解决方案是在Jenkins的LDAP配置中添加一个环境变量 com.sun.jndi.ldap.connect.pool 设为false, 具体可参考:[https://guv.cloud/post/jenkins-and-ldap/]

    4.3 我使用的是docker 容器跑的Jenkins,有一些有用的命令
    docker logs --following container_name/ID 查看日志
    docker exec --user root -it container_name/ID /bin/bash 以root用户登陆该容器

    4.4 如果登陆速度较慢,可以enable cache来减少查询LDAP server的负载

    相关文章

      网友评论

          本文标题:Jenkins上集成多个LDAP服务器认证

          本文链接:https://www.haomeiwen.com/subject/gmwvrktx.html