公司內的賬號系統通常使用openldap,openldap相對於把賬號存入mysql等關係數據庫中開發和維護成本都比較低,因此openldap成了公司內賬號體系最合適的選擇php
能夠經過下面的內容快速上手這個openldap賬號系統html
這個ldap裏面使用了不少的別名,下面列出了經常使用的別名java
dn: 區別名,類比mysql的主鍵idmysql
cn: 經常使用名,類比用戶的呢稱(全名)linux
sn: 用戶的姓氏git
giveName: 用戶名字(不包含姓)github
dc: 所屬域名,類比命名空間,一個用戶能夠存在在多個dc中spring
uid: 登陸使用的名稱sql
c: 所屬國家,好比CN表示中國docker
ou: 所屬組織
LDIF: openldap的數據描述格式,類比linux的/etc/passwd文件格式,使用固定的格式來描述包含的數據
dn:uid=1,ou=firstunit,o=myorganization,dc=example,dc=org
objectclass:top
objectclass:person
objectclass:uidObject
objectclass:simpleSecurityObject
userPassword:123456
cn:第一個用戶
sn:su
uid:1
telephoneNumber:13288888888
複製代碼
注意:不少objectClass都會提供額外的字段,好比上面的telephoneNumber字段就是person這個objectClass提供的
objectClass列表參考:www.zytrax.com/books/ldap/… 能夠經過定義schema建立新的objectClass: www.openldap.org/doc/admin24…
可使用這個docker一鍵啓動openldap服務器,參考:github.com/osixia/dock… 編寫docker-compose.yml以下
version: '3'
services:
ldap:
image: osixia/openldap:1.2.4
environment:
- TZ=PRC
ports:
- 389:389
- 636:636
admin:
image: osixia/phpldapadmin:0.8.0
volumes:
- ./data/admin/config:/container/service/phpldapadmin/assets/config
ports:
- 6443:443
links:
- ldap
複製代碼
而後啓動
docker-compose up -d
複製代碼
使用命令docker-compose ps
能夠查看啓動效果
這個docker建立的管理員賬號是:cn=admin,dc=example,dc=org 密碼:admin 默認的域名是:dc=example,dc=org
用戶體系通常體現了公司的組織架構,經常使用的組織架構有下面兩種
下面就用企業命名的組件架構舉例
構建ldif文件,好比myo.ldif
dn:o=myorganization,dc=example,dc=org
objectclass:top
objectclass:organization
o:myorganization
description:個人組織
dn:ou=firstunit,o=myorganization,dc=example,dc=org
objectclass:top
objectclass:organizationalUnit
description:組織裏的第一個單位
dn:uid=1,ou=firstunit,o=myorganization,dc=example,dc=org
objectclass:top
objectclass:person
objectclass:uidObject
objectclass:simpleSecurityObject
userPassword:123456
cn:第一個用戶
sn:su
uid:1
複製代碼
而後導入到ldap服務器裏面
docker-compose exec ldap bash
ldapadd -x -D "cn=admin,dc=example,dc=org" -W -f myo.ldif
複製代碼
操做效果以下
可使用ldapsearch命令查找數據,好比查找這個域名: dc=example,dc=org 下的全部數據
ldapsearch -x -H ldap://localhost -b dc=example,dc=org -D "cn=admin,dc=example,dc=org" -w admin
複製代碼
操做效果以下
能夠看到查詢成功執行了
使用slapcat -v -l mybackup.ldif
進行備份 操做效果以下
可使用ldapdelete -x -D "cn=admin,dc=example,dc=org" -w admin -r "dc=example,dc=org"
命令清空example,dc=org下的全部oepnldap的數據
操做效果以下:
注意並無刪除dc=example,dc=org這條記錄
注意:恢復前須要把備份文件中的這些字段先刪掉
使用命令ldapadd -x -D"cn=admin,dc=example,dc=org" -w admin -f mybackup.ldif
進行導入
操做效果以下
使用ldapsearch命令進行驗證
ldap目前有三個客戶端能夠選擇
jxplorer有中文界面,而且簡單容易上手,Apache Directory Studio功能強大,建議先使用jxplorer上手,而後再使用Apache Directory Studio進行操做,phpLDAPadmin能夠自行了解
定義有密碼用戶使用simpleSecurityObject這個objectClass,好比
dn: cn=suxiaolin,dc=example,dc=org
objectClass: organizationalRole
objectclass: simpleSecurityObject
cn: suxiaolin
userPassword:123456
複製代碼
這個userPassword字段的值就是用戶密碼