LDAP无法验证成功

确认openldap server可用。在其他平台上都使用正常。

  • 原因分析:
    我在oepnldap server上看日志,发现无论我猪齿鱼前台怎么配置
    从猪齿鱼传到openldap server的filter都是mail,dn都是空的

怀疑是不是绑定的字段有问题?

不好意思,这是我们的一个bug,这个地方去查mail=test的查不到抛了个NamingException
image
然后就跳出循环了,导致登陆不上去,我们修改下这块逻辑,感谢反馈

好的。麻烦到时候给个修复方法。谢谢!

我连WINDOWS AD同样有这个问题,是否是同一个BUG,可以确定管理员帐号和密码没有问题
018-10-18 15:19:14.904 INFO [iam-service,13d056249ceb3ff4,4fe3f01aed2c4e86,true] 1 — [XNIO-3 task-133] i.c.i.infra.common.utils.ldap.LdapUtil : ldap search fail: {}

javax.naming.NamingException: [LDAP: error code 1 - 000004DC: LdapErr: DSID-0C0907C2, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, v2580]
at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3194) ~[na:1.8.0_171]
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:3100) ~[na:1.8.0_171]
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2891) ~[na:1.8.0_171]
at com.sun.jndi.ldap.LdapCtx.searchAux(LdapCtx.java:1846) ~[na:1.8.0_171]
at com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1769) ~[na:1.8.0_171]
at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_search(ComponentDirContext.java:392) ~[na:1.8.0_171]
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:358) ~[na:1.8.0_171]
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:341) ~[na:1.8.0_171]
at javax.naming.directory.InitialDirContext.search(InitialDirContext.java:267) ~[na:1.8.0_171]
2

看日志应该是一个问题,这个问题已经记录下来,我们将尽快修复

我发现ldap这块还有很多问题,我调试了下源码 ldap search fail: {}并不是ldapcontext.search查不到抛异常,而是ldapConnect(String url, String baseDn, String port, Boolean useSSL)这个方法是通过匿名的方式去创建的连接,直接就被WINDOWS AD拒了,我不知道其它的ldap服务是不是充许匿名binding,但AD默认肯定是不可以匿名的,且前端设置的管理员用户和密码就没拿去作连接验证,另外一个还是ldap兼容性问题:“源码注释: 根据ldap配置和用户名从ldapContext中搜寻该用户是否存在和得到userDn“”,AD验证不能用userDn格式作为用户(至少我的环境是不通过的),它的格式是user@domain这种格式,所以getUserDn()这方法对AD就没啥作用了,毕竟大部分企业用的是WIN AD吧

这块确实有一些问题, 我们正在做测试和修复,旧的代码本地搭了个active directory服务做测试,确实是无法通过认证的,现在已经改了代码可以认证了,但是还要做一些测试和完善,感谢指正

还有点非常不解的是,既然平台支持ldap认证了为什么还要手动同步用户信息到平台数据库,企业人员变动非常频繁,不可能经常去同步操作,你们可以了解下Harbor Registry AD/ldap的集成方案,其实大部分软件也是这么做的,用户登陆验证通过自动获取AD/ldap相关属性并更新到本地数据库,再进一步做角色设定,c7n也完全可以自动同步用户邮箱电话这些信息过来,根本不需要管理员手动同步用户这个操作啊

你好,你说的这种我们也有考虑过,不过choerodon这边的用户同步还会涉及到后面gitlab,wiki等等一系列的操作。并且用户同步过来还是需要对用户进行手动分配角色的操作。有关于手动同步的问题,我们在新的版本中添加了定时任务,可以设定系统自动定时来同步ldap用户,避免了手动操作。

请问下这个问题修复了吗

我们做了修改,请问你那边还有问题吗