【更新】:有需要把Confluence与Jira存在的用户以及Gitlab存在的用户系统也集成进LDAP的相关联调集成,请看下一篇博客http://blog.51cto.com/luweiv998/2093720


跳槽便是脱坑的结束以及入坑的开始,每每入职一家公司以后都会有一大堆的大坑需要你去埋掉,可惜的是,本屌便是喜欢挖坑不埋坑的人,然后的然后便是把自己坑进去了,再聪慧,没有记录,便没有传承,文明不会进步,给自己敲个警钟。

so ... 简述下这个坑的物理属性:

公司有若干内部系统,Confluence、Jira、Jumpserver、Gitlab等等的系统,随着业务的发展以及人员的增加,账号的管理开始麻烦起来,先不说记得这么多的账号密码,每来(跑路)一个新人,都要增加(删除),每天都不用工作了,光是增加,删除账号就够你喝一壶了,于是乎便有了打一个域控的想法,由于出于强迫症的毛病选择了OpenLDAP,不要问我为啥不用微软的AD,我不会告诉你我被微软的反盗版骚扰过,被泄露了个人信息给微软,然后各种勒索,骚扰个人,有法律经验的同学,喜欢折腾的,可以反告微软一把,所以本屌极其鄙视微软这种下流的公司。


然后问题来了:Confluence 、Jira 原本就有用户,而且这两个系统也没有直接可以迁移用户的功能,只是兼容两种用户登录而已,各登各的,所以一下子没有特别好的方法解决:

  • 不能删除用户,然后再新建用户,这两个系统,如果用户在非本空间内存在编辑或者新建文件的类似操作。是无法删除用户的,只能禁用

  • 不能让其他用户换另外的名字注册登录,这样体验不好,搞不好被人骂死

  • 用crowd 只能解决atlassian自身的登录,集成不了其他的应用


于是想到了既然界面上不能改,那我直接改后台数据库,然后发现了一丝希望:

进入数据库,找到一张叫 cwd_user的表,里面包含了所有用户的登录账号以及信息,其中有个字段为directory_id的,光从名字上看已经很耀眼了,就是我们目录服务器的ID号码,里面分别有包括了两组的数字一组为内置的用户目录,也是系统默认的目录ID,第二组即LDAP的ID。

得到了这个数据以后再往下走,查看这两数据对应的含义,搞清楚,哪个对应LDAP,哪个对应内置用户服务。

再次找寻一个表,cwd_directory的表,打开以后,里面大家一看就一目了然了吧,ID 、目录簿的名称都有了,有了这个就可以直接开始修改用户的属性了。


此时屡下思路:

  1. 需要把本地用户转成LDAP用户的前提是LDAP存在这个用户,所以需要在LDAP中建立用户,账号必须是对应的,密码无所谓,统一密码即可

  2. 进入cwd_user表,找到对应用户,其中应该是存在两个一样的用户,一个为系统本身的目录,还有一个是存在于LDAP的用户:

  • 记住LDAP目录ID,然后,删除LDAP的那个用户的整条记录  为什么呢? 因为我们要伪装的是原本系统自带的目录服务器,所以原来编辑的文件或内容都为原先的这个用户ID,这个所有的才做应该是做好数据库关联的,贸然删除是非常危险的操作。

  • 修改directory_id 为LDAP的ID,还有一个需要修改的地方为CREDENTIAL的字段,把它修改为nopass


然后就这么完了,最后系统重启confluence或jira ,如果不重启,配置不一定会生效,看人品,亲测。