LDAP基础:1:使用docker快速搭建OpenLdap服务器
LDAP是Lightweight Directory Access Protocol的缩写,提供LDAP服务的软件有很多商业上获得成功的,其中以MS的AD和Redhat的NDS(Netscape directory server)使用最为广泛,而开源领域则是OpenLdap了,这篇文章使用docker版本的OpenLdap来搭建环境并进行确认。
镜像
本文使用osixia/openldap来进行演示,
拉取镜像:docker pull osixia/openldap:1.2.2
运行
docker run --name my-openldap-container --detach osixia/openldap:1.2.2
结果确认
这样我们就可以进入到运行起来的容器来确认相关信息了
版本信息
可以看到OpenLDAP的版本相关信息,为本年度5月23日发布的版本
[root@platform ~]# docker ps |grep ldap e444229214a5 osixia/openldap:1.2.2 "/container/tool/run" 24 hours ago Up 24 hours 389/tcp, 636/tcp my-openldap-container [root@platform ~]# docker exec -it my-openldap-container sh # ldapsearch -VV ldapsearch: @(#) $OpenLDAP: ldapsearch (May 23 2018 04:25:19) $ Debian OpenLDAP Maintainers <pkg-openldap-devel@lists.alioth.debian.org> (LDAP library: OpenLDAP 20444) #
测试配置文件
使用slaptest可以确认配置文件信息是否正确
# slaptest config file testing succeeded #
用户信息(容器内查询)
slapcat查询
可以使用slapcat来查看相关的用户信息,缺省方式下已经有cn=admin的用户信息,详细结果如下
# slapcat -v # id=00000001 dn: dc=example,dc=org objectClass: top objectClass: dcObject objectClass: organization o: Example Inc. dc: example structuralObjectClass: organization entryUUID: f8f7b81c-6a92-1038-9a4d-81d6b41cd327 creatorsName: cn=admin,dc=example,dc=org createTimestamp: 20181022221004Z entryCSN: 20181022221004.555004Z#000000#000#000000 modifiersName: cn=admin,dc=example,dc=org modifyTimestamp: 20181022221004Z # id=00000002 dn: cn=admin,dc=example,dc=org objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator userPassword:: e1NTSEF9RTBJMTlqaW1BTVlaZ0h2aEhPbm5YVVdWRmQxaEtBRnM= structuralObjectClass: organizationalRole entryUUID: f8f818b6-6a92-1038-9a4e-81d6b41cd327 creatorsName: cn=admin,dc=example,dc=org createTimestamp: 20181022221004Z entryCSN: 20181022221004.557498Z#000000#000#000000 modifiersName: cn=admin,dc=example,dc=org modifyTimestamp: 20181022221004Z #
ldapsearch查询
更为常见的方式这是使用ldapsearch来进行查询
# ldapsearch -x -H ldap://localhost -b dc=example,dc=org -D "cn=admin,dc=example,dc=org" -w admin # extended LDIF # # LDAPv3 # base <dc=example,dc=org> with scope subtree # filter: (objectclass=*) # requesting: ALL # # example.org dn: dc=example,dc=org objectClass: top objectClass: dcObject objectClass: organization o: Example Inc. dc: example # admin, example.org dn: cn=admin,dc=example,dc=org objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator userPassword:: e1NTSEF9RTBJMTlqaW1BTVlaZ0h2aEhPbm5YVVdWRmQxaEtBRnM= # search result search: 2 result: 0 Success # numResponses: 3 # numEntries: 2 #
当然也可以使用如下方式进行查询
ldapsearch -x -H ldap://`hostname` -b dc=example,dc=org -D "cn=admin,dc=example,dc=org" -w admin
另外这里的hostname也可以换成127.0.0.1,也可以使用容器分配的IP(172.17.0.3)
用户信息(容器外查询)
上面的对用户信息的确认是在容器内进行的,在宿主机上对其进行的访问则需要保证宿主机上也有诸如ldapsearch的连接方式,本文由于宿主机为centos7.4,所以这里只需要yum install openldap-clients即可。
[root@platform ~]# ldapsearch -x -H ldap://172.17.0.3 -b dc=example,dc=org -D "cn=admin,dc=example,dc=org" -w admin # extended LDIF # # LDAPv3 # base <dc=example,dc=org> with scope subtree # filter: (objectclass=*) # requesting: ALL # # example.org dn: dc=example,dc=org objectClass: top objectClass: dcObject objectClass: organization o: Example Inc. dc: example # admin, example.org dn: cn=admin,dc=example,dc=org objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator userPassword:: e1NTSEF9RTBJMTlqaW1BTVlaZ0h2aEhPbm5YVVdWRmQxaEtBRnM= # search result search: 2 result: 0 Success # numResponses: 3 # numEntries: 2 [root@platform ~]#
LDAP一般用于SSO的单点登录,所以其他机器能够连接进行验证是最基础的,这篇文章为了简单演示,只是使用了容器的IP进行连接验证。
参考内容
https://github.com/osixia/docker-openldap
http://www.openldap.org/doc/
- 使用Amazon免费云主机和Docker技术,快速搭建Squid服务器!
- 使用阿里云轻量应用服务器,零基础快速搭建ECSHOP免费网店系统
- LinuxC/C++编程基础(21) 使用boost::asio搭建服务器简单实例(续)
- [Windows Azure] 使用 Windows Azure 快速搭建 Redis 服务器
- 使用python SimpleHTTPServer 快速搭建Web服务器
- 使用Dockerfile搭建Apache Web服务器
- Linux:rsync服务器的快速搭建和使用
- [Windows Azure] 使用 Windows Azure 快速搭建 Redis 服务器
- CentOS 7下快速安装Gitlab,搭建个人或者公司内部使用的Git服务器
- Ubuntu14.04快速搭建SVN服务器及日常使用
- Ubuntu 14.04快速搭建SVN服务器及日常使用
- 使用SpringBoot快速搭建服务器
- 使用VisualSVN Server快速搭建基于SVN的代码版本控制服务器
- 使用docker 搭建基础的 mysql 应用
- [Azure] 使用 Azure 快速搭建 Redis 服务器
- Ubuntu14.04快速搭建SVN服务器及日常使用