轻型目录访问协议

部署自己的ldap服务,实现统一登录管理

1
2
3
docker run -p 389:389 --name myopenldap --network bridge --hostname openldap-host --env LDAP_ORGANISATION="mylitboy" --env LDAP_DOMAIN="mylitboy.com" --env LDAP_ADMIN_PASSWORD="ldap123" --detach osixia/openldap

docker run -d --privileged -p 10004:80 --name myphpldapadmin --env PHPLDAPADMIN_HTTPS=false --env PHPLDAPADMIN_LDAP_HOSTS=172.17.0.3 --detach osixia/phpldapadmin

1、登录
在运行成功后访问运行成功的phpldapadmin,地址为:192.168.106.150:8080,如图所示

点击登录,用户名为cn=admin,dc=mylitboy,dc=com 密码:ldap123

2、在界面新建组与用户

先创建一个组织单元比如创建一个产品部:

然后在该部门中创建组,或者不在细分的话也可直接创建用户。为了演示我就都先创建组然后创建用户。
同样点击刚创建好的product部的条目,点击create a child entry,选择Posix Group,创建一个开发组。

在新建的组下添加用户,选中developmnt条目,创建子条目,选择User Account或Account,推荐使用User Account,因为User Account中包含了Account,还增加了更多的属性。

填写完之后提交,创建成功

此时该用户的dn为cn=zhang san,cn=development,ou=product,dc=example,dc=com,如果想使用uid来识别用户可以在界面中rename修改用户的dn。

3、在ldap中使用memberOf属性
在一些组件的继承中需要用到memberOf属性去同步用户的一些角色信息,但是posixGroup组并没有提供这个属性,所以我们需要新建一个拥有groupOfUniqueNames的用户组条目。
我们在product部门条目下创建一个拥有groupOfUniqueNames的用户组条目,第一步先选择创建子条目,第二部选择默认模板。

选择groupOfUniqueNames,点击下一步

rdn选择ou或者cn都可以(rdn:一般指dn逗号最左边的部分,如cn=zhang san,cn=development,ou=product,dc=example,dc=com中rdn为cn=zhang san。它与RootDN不同,RootDN通常与RootPW同时出现,特指管理LDAP中信息的最高权限用户。)
然后选择此组内包含的成员,点击这个搜索按钮,选择对应的人员,我们选择uid=zsan的用户。

注意填写改组的ou属性。

然后点击创建。
点进admin的组中 我们就可以看到已经添加成功的uid=zsan的用户。

我们也可进入容器去进行验证。
进入容器

docker exec -it 容器id /bash/bin
1
使用命令:

ldapsearch -LL -H ldapi:/// -D “cn=admin,dc=xxx,dc=xxx” -W “(uid=所要搜索的uid)” -b dc=xxx,dc=xxx memberOf
1
效果如下

如果未出现红框中结果,则未配置成功。
注意:当前docker安装的最新版的openLDAP默认开启了memberOf属性,如果是其他方式安装的openLDAP可以参考https://wandouduoduo.github.io/articles/53f92c3c.html

4、在界面使用LDIF 文件进行组与用户的创建。

在界面选择import,可直接输入LDIF文件内容,也可导入对应的LDIF文件,如创建一个product部门下的deploy组。

创建成功

在deploy组下创建一个uid=lisi的人员

创建成功

LDIF文件可以从相似的条目中导出,然后稍作修改后进行创建。如图