ubuntu
sudo apt-get install ldap-utils
添加 ldapadd -x -H ldap://localhost:1389 -D “cn=admin,dc=example,dc=org” -w adminpassword_dJWxfm -f user.ldif
查询 单个
假设你有一个用户 alice,你可以使用以下命令来验证: ldapsearch -x -H ldap://localhost:1389 -D “cn=admin,dc=example,dc=org” -w adminpassword_dJWxfm -b “ou=users,dc=example,dc=org” “(uid=alice)”
ldapsearch -x -H ldap://localhost:1389 -D “cn=admin,dc=example,dc=org” -w adminpassword_dJWxfm -b “ou=users,dc=example,dc=org” “(uid=alice1)”
查询所有 ldapsearch -x -H ldap://localhost:1389 -D “cn=admin,dc=example,dc=org” -w adminpassword_dJWxfm -b “dc=example,dc=org”
user.ldif
1 2 3 4 5 6 7 8 9 dn: uid=alice1,ou=users,dc=example,dc=org objectClass: inetOrgPerson objectClass: top uid: alice1 cn: Alice Smith sn: Smith mail: alice1@example.com userPassword: alicepassword
curl -X POST http://localhost:3000/login -H “Content-Type: application/json” -d ‘{“username”: “alice”, “password”: “alicepassword”}’
目录
2 min 搭建 openldap 环境
ldap 基础知识
数据的增删减改
openldap 用户登录
phpLdapAdmin 的安装与使用
JNDI
在 centos 上搭建 openldap 环境
第一节 2 min 搭建 openldap 环境 你需要
ubuntu 16.04
docker
linux
docker 安装脚本 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 sudo apt-get remove docker docker-engine docker.io containerd runcsudo apt-get updatesudo apt-get install -y \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository \"deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \stable" sudo apt-get updatesudo apt-get install docker-ce docker-ce-cli containerd.io -ysudo curl -L "https://github.com/docker/compose/releases/download/1.25.3/docker-compose-$(uname -s) -$(uname -m) " -o /usr/local/bin/docker-composesleep 1sudo chmod +x /usr/local/bin/docker-composesudo systemctl start dockersudo systemctl enable dockersudo groupadd docker sudo usermod -a -G docker $USER sudo mkdir -p /etc/dockerecho "{" > daemon.jsonecho "\"registry-mirrors\": [\"https://ofyci9nf.mirror.aliyuncs.com\"]" >> daemon.jsonecho "}" >> daemon.jsonecho "" >> daemon.jsonsudo mv daemon.json /etc/docker/daemon.jsonsudo systemctl daemon-reloadsudo systemctl restart dockersleep 5sudo gpasswd -a $USER docker sudo newgrp docker
下载 ldap 镜像 1 2 docker pull osixia/openldap:1.2.2 docker pull osixia/phpldapadmin:0.7.2
把 ldap 镜像跑起来吧~ 1 2 3 4 docker run --name my-openldap-container --detach osixia/openldap:1.2.2 docker exec -it my-openldap-container bash slaptest ldapsearch -x -H ldap://localhost -b dc=example,dc=org -D "cn=admin,dc=example,dc=org" -w admin
第二节 openldap 基础知识
第三节 数据的增删减改 1 ldapmodify [ldap 服务器地址] [你的用户名] [你的密码] [ldif 文件的地址]
file name:barbara.ldif
1 2 3 4 5 6 7 dn : cn=barbara,dc=example,dc=orgobjectClass : inetOrgPersoncn : barbarasn : Jensentitle : the world's most famous mythical managermail : bjensen@example.comuid : bjensen
1 ldapadd -x -H ldap://127.0.0.2:389 -D "cn=admin,dc=example,dc=org" -w admin -f barbara.ldif
1 ldapsearch -x -H ldap://127.0.0.2:389 -b dc=example,dc=org -D "cn=admin,dc=example,dc=org" -w admin
1 ldapsearch -x -H ldap://127.0.0.2:389 -b dc=example,dc=org -D "cn=admin,dc=example,dc=org" -w admin "cn=*"
1 ldapdelete -x -H ldap://127.0.0.2:389 -D "cn=admin,dc=example,dc=org" -w admin "cn=barbara,dc=example,dc=org"
1 2 3 4 5 6 7 8 dn : cn=barbara,dc=example,dc=orgchangetype : addobjectClass : inetOrgPersoncn : barbarasn : Jensentitle : the world's most famous mythical managermail : bjensen@example.comuid : bjensen
1 ldapmodify -x -H ldap://127.0.0.2:389 -D "cn=admin,dc=example,dc=org" -w admin -f barbara.ldif
file name: addorg.ldif
1 2 3 4 5 6 7 8 9 10 11 dn : ou=People,dc=example,dc=orgchangetype : addobjectclass : topobjectclass : organizationalUnitou : Peopledn : ou=Servers,dc=example,dc=orgchangetype : addobjectclass : topobjectclass : organizationalUnitou : Servers
file name: modify1.ldif
1 2 3 4 dn : cn=barbara,dc=example,dc=orgchangetype : modifyreplace : titletitle : one of the world's most famous mythical manager
file name: modify2.ldif
1 2 3 4 dn : cn=barbara,dc=example,dc=orgchangetype : modifyadd : descriptiondescription : barbara description
file name: modify3.ldif
1 2 3 4 5 dn : cn=barbara,dc=example,dc=orgchangetype : modrdnnewrdn : cn=babaradeleteoldrdn : 0newsuperior : ou=People,dc=example,dc=org
第四节 ldap 用户 ldappasswd 用于重置其他用户的密码
ldapmodify 用于更改自己的密码
1 ldappasswd -x -H ldap://127.0.0.2:389 -D "cn=admin,dc=example,dc=org" -w admin "cn=barbara,dc=example,dc=org"
1 ldappasswd -x -H ldap://127.0.0.2:389 -D "cn=barbara,dc=example,dc=org" -w xxxx -s mima
file name: passwd.ldif
1 2 3 4 dn : cn=barbara,dc=example,dc=orgchangetype : modifyreplace : userPassworduserPassword : xinmima
1 ldapmodify -x -H ldap://127.0.0.2:389 -D "cn=barbara,dc=example,dc=org" -w mima -f passwd.ldif
第五节 phpLdapAdmin 的安装与使用 1 2 osixia/openldap:1.2 .2 osixia/phpldapadmin:0.7 .2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 version: '2' services: openldap: container_name: openldap image: osixia/openldap:1.2.2 ports: - "389:389" - "636:636" command: [--copy-service, --loglevel, debug] phpldapadmin: container_name: phpldapadmin image: osixia/phpldapadmin:0.7.2 ports: - "80:80" environment: - PHPLDAPADMIN_HTTPS="false" - PHPLDAPADMIN_LDAP_HOSTS=openldap links: - openldap depends_on: - openldap
第六节 JNDI 可以参考:https://blog.csdn.net/awj321000/article/details/78812358
这个不是 JNDI,用了第三方的库,个人感觉 JNDI 不好用。
如果读者更熟悉 Python 的话,可以参考这些:
https://zhuanlan.zhihu.com/p/52532191,https://zhuanlan.zhihu.com/p/52532409,https://zhuanlan.zhihu.com/p/52532820,https://zhuanlan.zhihu.com/p/52532895,https://zhuanlan.zhihu.com/p/52533010
https://github.com/wangzhiwei1888/ldap-videoTutorial
https://www.bilibili.com/video/BV1Pa4y1e7Ez/?spm_id_from=333.337.search-card.all.click&vd_source=ffda878df0ed45bee1ade91d8f451048