首页 » 网站推广 » phpldap协定技巧_LDAP协议及OpenLDAP搭建

phpldap协定技巧_LDAP协议及OpenLDAP搭建

访客 2024-12-10 0

扫一扫用手机浏览

文章目录 [+]

1.2 数据模型

在LDAP中,信息以树状办法组织,在树状信息中的基本数据单元是条款,而每个条款由属性构成,属性中存储有属性值。

以下结合一个OpenLDAP里面的数据来阐明下干系术语

phpldap协定技巧_LDAP协议及OpenLDAP搭建

Entry

条款,也叫记录项,是LDAP中最基本的颗粒,就像字典中的词条,或者是数据库中的记录。
常日对LDAP的添加、删除、变动、检索都因此条款为基本工具的。
(把稳:一个Entry可以是一个User也可以是一个OU也可以是一个Group都行)

phpldap协定技巧_LDAP协议及OpenLDAP搭建
(图片来自网络侵删)

dn:每一个条款都有一个唯一的标识名(distinguished Name ,DN)(相称于一个表里面会有一个唯一的标识字段)。
通过DN的层次型语法构造,可以方便地表示出条款在LDAP树中的位置,常日用于检索。

rdn:一样平常指dn逗号最左边的部分,如cn=dev1。

它与RootDN不同,RootDN常日与RootPW同时涌现,特指管理LDAP中信息的最高权限用户。

Base DN:LDAP目录树的最顶部便是根(这树目录树的根节点),也便是所谓的“Base DN”,如图:”dc=landingzone,dc=com”。

Attribute

每个条款都可以有很多属性(Attribute),比如常见的人都有姓名、地址、电话等属性。
每个属性都有名称及对应的值,属性值可以有单个、多个,比如你有多个邮箱。

属性不是随便定义的,须要符合一定的规则,而这个规则可以通过schema制订。
比如

那针对posixGroup的类型,属性的修正就得这样

objectClass:表示这个Entry的类型,这块是由Schema定义出来的,须要有哪些属性。
后面可以编辑这个Entry扩展一些属性。

LDAP为职员组织机构中常见的工具都设计了属性(比如commonName,surname)。
下面有一些常用的别名:

属性

别名

语法

描述

值(举例)

commonName

cn

Directory String

姓名

sean

surname

sn

Directory String

Chow

organizationalUnitName

ou

Directory String

单位(部门)名称

IT_SECTION

organization

o

Directory String

组织(公司)名称

example

telephoneNumber

Telephone Number

电话号码

110

objectClass

内置属性

organizationalPerson

ObjectClass

工具类是属性的凑集,LDAP预想了很多职员组织机构中常见的工具,并将其封装成工具类。

比如:

职员(person)含有姓(sn)、名(cn)、电话(telephoneNumber)、密码(userPassword)等属性

单位职工(organizationalPerson)是职员(person)的继续类,除了上述属性之外还含有职务(title)、邮政编码(postalCode)、通信地址(postalAddress)等属性。

通过工具类可以方便的定义条款类型。
每个条款可以直接继续多个工具类,这样就继续了各种属性。
如果2个工具类中有相同的属性,则条款继续后只会保留1个属性。
工具类同时也规定了哪些属性是基本信息,必须含有(Must 活Required,必要属性):哪些属性是扩展信息,可以含有(May或Optional,可选属性)。

工具类有三种类型:构造类型(Structural)、抽象类型(Abstract)和赞助类型(Auxiliary)。
构造类型是最基本的类型,它规定了工具实体的基本属性,每个条款属于且仅属于一个构造型工具类。
抽象类型可以是构造类型或其他抽象类型父类,它将工具属性中共性的部分组织在一起,称为其他类的模板,条款不能直接集成抽象型工具类。
赞助类型规定了工具实体的扩展属性。
每个条款至少有一个构造性工具类。

Schema

工具类(ObjectClass)、属性类型(AttributeType)、语法(Syntax)分别约定了条款、属性、值

值的类型约束

TLS & SASL

分布式LDAP 因此明文的格式通过网络来发送信息的,包括client访问ldap的密码(当然一样平常密码已然是二进制的),SSL/TLS 的加密协议便是来担保数据传送的保密性和完全性。

SASL (Simple Authenticaion and Security Layer)大略身份验证安全框架,它能够实现openldap客户端到做事真个用户验证,也是ldapsearch、ldapmodify这些标准客户端工具默认考试测验与LDAP做事端认证用户的办法(条件是已经安装好 Cyrus SASL)。
SASL有几大工业实现标准:Kerveros V5、DIGEST-MD5、EXTERNAL、PLAIN、LOGIN。

Kerveros V5是里面最繁芜的一种,利用GSSAPI机制,必须配置完全的Kerberos V5安全系统,密码不再存放在目录做事器中,每一个dn与Kerberos数据库的主体对应。
DIGEST-MD5轻微大略一点,密码通过saslpasswd2天生放在sasldb数据库中,或者将明文hash存到LDAP dn的userPassword中,每一个authid映射成目录做事器的dn,常和SSL合营利用。
参考将 LDAP 客户端配置为利用安全性。

LDIF

LDIF(LDAP Data Interchange Format,数据交流格式)是LDAP数据库信息的一种文本格式,用于数据的导入导出,每行都是“属性: 值”对。

2 LDAP做事器搭建

LDAP=目录数据库+访问协议。
因此要实现LDAP登录,首先要搭建一套自己的LDAP做事器,以供开拓过程的自测,以及提测后的测试。
然而LDAP做事器厂商浩瀚,本次紧张挑选Linux环境的OpenLDAP做事器,搭建过程和碰着的一些问题总结如下。

2.1 OpenLDAP做事器的搭建环境准备准备一台Linux主机并安装有docker环境。
建议直接购买一台云做事器,镜像可以选择如Docker运行环境(CentOS7.2 64位),这样自带docker环境免安装。
通过docker来搭建

docker run --name ldap-server \ --hostname ldap-server \-p 389:389 -p 636:636 \--detach \osixia/openldap:latest

这个镜像是利用了自签凭据,利用 TLS 办法連線時會出現遠端憑證無效的錯誤。
办理办法:

1、執行 docker cp ldap-server:/container/service/slapd/assets/certs/ldap.crt . 將自動產生的自簽憑證複製到本機的當前目錄中。

2、安裝 ldap.crt 憑證到本機中,並設定為信赖憑證 (或單獨設定信赖 X509 初級規則)。

如果不想利用默认的凭据,也可以自动天生。
比如通过OpenSSL自署名天生。
其余这个镜像的证书位置

CA 憑證檔案路徑:/container/service/slapd/assets/certs/ca.crtLDAP 憑證檔案路徑:/container/service/slapd/assets/certs/ldap.crtLDAP 憑證 Key 檔案路徑:/container/service/slapd/assets/certs/ldap.key

通过这个命令,创建出来的OpenLDAP会有几个默认参数

Port: 389 / 636 (TLS)Admin DN: cn=admin,dc=example,dc=orgAdmin Password: admin自定义凭据-天生自定义证书

1、通过openssl天生私钥

openssl genrsa -out server.key 1024

2、根据私钥天生证书申请文件csr

openssl req -new -key server.key -out server.csr

ps:Common Name可以输入:.yourdomain.com,这种办法天生通配符域名证书

3、利用私钥对证书申请进行署名从而天生证书

openssl x509 -req -in server.csr -out server.crt -signkey server.key -days 3650自定义凭据-启动容器时挂载到容器

docker run --name ldap-server --hostname ldap-server -p 389:389 -p 636:636 --volume /path/ssl:/container/service/slapd/assets/certs --detach osixia/openldap:latest

通过-v 挂载宿主机的目录到容器进而完成利用自定义证书。

通过环境变量修正一些自定义LDAP设定

LDAP_ORGANISATION:設定 LDAP 的組織名稱,預設為 Example Inc.。

LDAP_DOMAIN:設定 LDAP 的組織域名,預設為 example.org。

LDAP_ADMIN_PASSWORD:設定 LDAP 的管理員密碼,預設為 admin。

LDAP_TLS_VERIFY_CLIENT:設定 LDAP 是否驗證客戶端憑證,如想關掉可以設為 try,預設為 demand。

LDAP_TLS_CRT_FILENAME:LDAP SSL 憑證檔案名稱,預設為 ldap.crt。

LDAP_TLS_KEY_FILENAME:LDAP SSL 憑證 Key 檔案名稱,預設為 ldap.key。

LDAP_TLS_CA_CRT_FILENAME:CA 憑證檔案名稱,預設為 ca.crt。

搭建测试环境

为了简化后续操作,关闭TLS认证。
就用下面这条启动指令:

docker run --name ldap-server --hostname ldap-server -p 389:389 -p 636:636 -e LDAP_TLS_VERIFY_CLIENT="try" -e LDAP_DOMAIN="landingzone.com" -e LDAP_ADMIN_PASSWORD="admin1" --detach osixia/openldap:latest搭建LDAP管理界面

docker run --name ldap-admin -p 6443:443 --link ldap-server:ldap-host --env PHPLDAPADMIN_LDAP_HOSTS=ldap-host --detach osixia/phpldapadmin:latest

如果是本地的话那就可以直接浏览器访问:https://localhost:6443 就可以打开界面了。
干系登录账号与密码:

Admin DN(用户名): cn=admin,dc=landingzone,dc=com

Admin Password(密码): admin1

登录成功的界面

通过LDAP管理界面增编削LDAP数据添加Entry

通过这个操作可以添加OU\Group\Account等企业内部的组织与员工信息。

标签:

相关文章

php礼拜断定技巧_PHP date 函数

PHP date( 函数PHP date( 函数可把韶光戳格式化为可读性更好的日期和韶光。韶光戳是一个字符序列,表示一定的事宜...

网站推广 2024-12-12 阅读0 评论0

php变量真技巧_PHP 变量

实例<?php$x=5;$y=6;$z=$x+$y;echo$z;?>运行实例 »与代数类似x=5y=...

网站推广 2024-12-12 阅读0 评论0