Git Product home page Git Product logo

openldap's Introduction

Centos-OpenLDAP

Project 使用的 Centos 镜像作为作为基础镜像进行构建,部分实现过程参照 https://github.com/osixia/docker-openldap 项目。

默认镜像使用 TLS 部署 OpenLDAP,如果不需要则通过修改环境变量(slapd/default-env)进行配置即可。

创建 local 数据目录:

$ mkdir -p /data/openldap/ldap /data/openldap/slapd.d /data/openldap/certs

启动 OpenLDAP Server

强调,hostname 是必须的,所有的配置几乎都围绕着 HOSTNAME 进行,则 LADP_DOMAIN 是定义自己的域,如果不填则表示默认(测试使用) 请合理使用!

$ docker run -d -p 389:389 -p 639:639 \
--restart always \
--name openldap-server \
--hostname shileizcc.com \
-e LDAP_DOMAIN=shileizcc.com \
-e LDAP_ADMIN_PASSWORD=shileizcc \
-v /data/openldap/ldap:/var/lib/ldap \
-v /data/openldap/slapd.d:/etc/openldap/slapd.d \
-v /data/openldap/certs:/container/service/slapd/certs \
slzcc/openldap:0.1.3

添加组织与用户:

$ docker exec -it openldap-server bash
$ cat << EOF | ldapadd -x -D "cn=admin,dc=shileizcc,dc=com" -w shileizcc  -H ldap://shileizcc.com
dn: ou=IT,dc=shileizcc,dc=com
ou: IT
objectClass: top
objectClass: organizationalUnit

dn: cn=Ops,ou=IT,dc=shileizcc,dc=com
cn: Ops
gidNumber: 500
objectClass: posixGroup
objectClass: top

dn: cn=shilei,cn=ops,ou=IT,dc=shileizcc,dc=com
uid: shilei
cn: shilei
sn: shi
givenName: lei
displayName: shilei
objectClass: posixAccount
objectClass: top
objectClass: person
objectClass: shadowAccount
objectClass: inetOrgPerson
uidNumber: 1009
gidNumber: 1009
gecos: System Manager
loginShell: /bin/bash
homeDirectory: /home/shilei
userPassword: shilei
shadowLastChange: 17654
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
shadowExpire: -1
employeeNumber: 18002
homePhone: 0531-xxxxxxxx
mobile: 152xxxxxxxxx
mail: [email protected]
postalAddress: BeiJing
initials: Test
EOF

启动 Web UI

$ docker run -d -p 18080:80 --name phpldapadmin \
--restart always \
-e PHPLDAPADMIN_LDAP_HOSTS=10.140.0.2 \
-e PHPLDAPADMIN_HTTPS=false \
osixia/phpldapadmin:latest

或者

docker-compose Start

$ docker-compose up -d

如果访问 Web UI 出现如下错误:

openldap-server | 5b6259c2 conn=1000 fd=14 ACCEPT from IP=192.168.80.3:55744 (IP=192.168.80.2:389)
openldap-server | 5b6259c2 conn=1000 op=0 BIND dn="cn=admin,dc=shileizcc,dc=com" method=128
openldap-server | 5b6259c2 conn=1000 op=0 RESULT tag=97 err=49 text=

则重新启动 UI 即可:

$ docker-compose stop phpldapadmin
$ docker-compose start phpldapadmin

开启 Multi Master Replication

$ LDAP_CID=$(docker run --hostname ldap.example.org --env LDAP_REPLICATION=true -e LDAP_DOMAIN=example.org -e LDAP_ADMIN_PASSWORD=admin -d -e LDAP_REMOVE_CONFIG_AFTER_SETUP=false  slzcc/openldap:0.1.3)
$ LDAP_IP=$(docker inspect -f "{{ .NetworkSettings.IPAddress }}" $LDAP_CID)

$ LDAP2_CID=$(docker run --hostname ldap2.example.org --env LDAP_REPLICATION=true -e LDAP_DOMAIN=example.org -e LDAP_ADMIN_PASSWORD=admin -d  -e LDAP_REMOVE_CONFIG_AFTER_SETUP=false  slzcc/openldap:0.1.3)
$ LDAP2_IP=$(docker inspect -f "{{ .NetworkSettings.IPAddress }}" $LDAP2_CID)

$ docker exec $LDAP_CID bash -c "echo $LDAP2_IP ldap2.example.org >> /etc/hosts"
$ docker exec $LDAP2_CID bash -c "echo $LDAP_IP ldap.example.org >> /etc/hosts"

测试: 添加新用户

$ docker exec $LDAP_CID ldapadd -x -D "cn=admin,dc=example,dc=org" -w admin -f /container/service/slapd/test/new-user.ldif -H ldap://ldap.example.org -ZZ

检验是否添加用户并同步

$ docker exec $LDAP2_CID ldapsearch -x -H ldap://ldap.example.org -b dc=example,dc=org -D "cn=admin,dc=example,dc=org" -w admin -ZZ
# or
$ docker exec $LDAP2_CID ldapsearch -x -H ldap://ldap2.example.org -b dc=example,dc=org -D "cn=admin,dc=example,dc=org" -w admin -ZZ

可以在 slapd/config/bootstrap/ldif/custom 目录内添加自定义的 ldif,目前已经加入了部分可能使用到的 schema。

如果修改修改自定义的 CA,则通过 ssl/config/ 进行修改 cfssl json 文件进行定制。(目前不支持自定义上传 CA 证书)。

openldap's People

Contributors

slzcc avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.