jenkins - 无法在 Jenkins 中使用 LDAP 登录

标签 jenkins ldap

为了加强我们 Jenkins CI 服务器的安全性(在 Ubuntu 14.04 上运行 1.614),我昨天配置了 LDAP 插件。昨天一切似乎都很好,我能够登录并手动配置和运行一些构建。

然而,今天早上,没有人——包括我自己——能够登录。

我们被告知要查看服务器控制台输出 - 但是,/var/log/jenkins/jenkins.log 中没有任何记录。 .我找到了 How do I view the Jenkins server console output on the local filesystem? - 但在 /usr/lib/jenkins/ 中没有这样的日志文件(我的 Jenkins 主目录)。

我已经在 https://wiki.jenkins-ci.org/display/JENKINS/LDAP+Plugin 尝试了简单的故障排除 groovy 脚本,但每个查询返回:

Checking the name 'wibble'...
  It is NOT a group, reason: No such property: Jenkins for class: RemoteClass
  It is NOT a user, reason: No such property: Jenkins for class: RemoteClass

我的安全配置:
<useSecurity>true</useSecurity>
<authorizationStrategy class="hudson.security.AuthorizationStrategy$Unsecured"/>
<securityRealm class="hudson.security.LDAPSecurityRealm" plugin="ldap@1.11">
    <server>server.ip.address</server>
    <rootDN>dc=domain,dc=location,dc=au</rootDN>
    <inhibitInferRootDN>false</inhibitInferRootDN>
    <userSearchBase>dc=domain,dc=location,dc=au</userSearchBase>
    <userSearch>sAMAccountName={0}</userSearch>
    <groupSearchBase>ou=groups</groupSearchBase>
    <groupSearchFilter>(&amp; (cn={0}) (objectclass=group) )</groupSearchFilter>
    <groupMembershipStrategy class="jenkins.security.plugins.ldap.FromGroupSearchLDAPGroupMembershipStrategy">
        <filter>(&amp;(objectCategory=group)(member={0}))</filter>
    </groupMembershipStrategy>
    <managerDN>cn=administrator,cn=users,dc=domain,dc=location,dc=au</managerDN>
    <managerPasswordSecret>wurble-bop-de-boo</managerPasswordSecret>
    <disableMailAddressResolver>false</disableMailAddressResolver>
    <displayNameAttributeName>displayname</displayNameAttributeName>
    <mailAddressAttributeName>mail</mailAddressAttributeName>
    <userIdStrategy class="jenkins.model.IdStrategy$CaseInsensitive"/>
    <groupIdStrategy class="jenkins.model.IdStrategy$CaseInsensitive"/>
</securityRealm>

一夜之间没有进行任何配置更改,我们将这些相同的凭据/设置用于来自大约 3 或 4 个不同应用程序的其他 LDAP 集成,并且它们都运行良好。

最佳答案

在“配置全局安全性”页面上简单地添加或修改用户后,我遇到了类似的问题。我认为正如@davidrv87 所说:Chrome 会自动填充一些隐藏的“用户名”和“密码”字段并破坏您的 LDAP 设置。

结果

在主 Jenkins config.xml文件,错误的设置在 <securityRealm> 下显示为新的子节点:

  <securityRealm class="hudson.security.LDAPSecurityRealm" plugin="ldap@1.11">
+      <managerDN>myusername</managerDN>
+      <managerPasswordSecret>uT5S1rfROmNBuEsw8z=</managerPasswordSecret>

如何修复
  • 编辑 ~jenkins/config.xml
  • 删除 managerDNmanagerPasswordSecret节点(线)。
  • 重启 Jenkins 服务。

  • 现在 LDAP 登录应该又可以工作了!

    关于jenkins - 无法在 Jenkins 中使用 LDAP 登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30448640/

    相关文章:

    .net - msbuild 和文件版本更改

    linux - Jenkins 和路径

    search - Apache 目录 LDAP - 分页搜索

    java - Active Directory 不支持 NamingListener?

    java - 如何查看spring ldapTemplate生成的查询

    jenkins - 有没有办法在 Jenkinsfile 中直接使用声明性语法的 "propagate=false"进行阶段/步骤?

    linux - jenkins svn 以 root 身份运行

    jenkins - 如何从 Jenkins 获取过去 24 小时内运行的构建列表?

    ldap - MS Exchange 服务器和 LDAP

    perl - 如何在ldap中按dn搜索