您的位置:首页 > 运维架构 > Docker

LDAP基础:1:使用docker快速搭建OpenLdap服务器

2018-11-04 20:40 639 查看
版权声明:本文为博主原创文章,未经博主允许欢迎转载,但请注明出处。 https://blog.csdn.net/liumiaocn/article/details/83719568


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/

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: