LDAP学习 £神魔★判官ぃ 2022-12-25 14:51 216阅读 0赞 ## 什么是LDAP? ## LDAP(Lightweight Directory Access Protocol),轻量级目录访问协议。LDAP是一种通讯协议,LDAP支持TCP/IP。协议就是标准,并且是抽象的。提供LDAP服务的软件有很多商业上获得成功的,其中以MS的AD(Active Directory)和Redhat的NDS(Netscape directory server)使用最为广泛,而开源领域则是OpenLdap。 **什么是OpenLDAP?** 什么是OpenLDAP?OpenLDAP就是LDAP的一个具体实现,属于开源集中账号管理架构的实现,且支持众多系统版本,被广大互联网公司所采用。我们暂且把它理解成是个数据库。像数据库一样,LDAP也是有client端和server端。server端是用来存放资源,client端用来操作增删改查等操作。而我们通常说的LDAP是指运行这个数据库的服务器。而我们通常说的LDAP是指运行这个数据库的服务器。可以简单理解AD =LDAP服务器+LDAP应用。 作者:我只是一个小白木木 链接:https://www.jianshu.com/p/a3f8190e189c 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 **那LDAP这种数据库有什么特殊的呢?** 我们知道,像MySQL数据库,数据都是按记录一条条记录存在表中。而LDAP数据库,是树结构的,数据存储在叶子节点上,具体信息存储在条目(entry)中,条目可以看成关系数据库中的表记录,条目是具有区别名(Distinguished Name,DN)的属性(attribute),DN 是用来引用条目,DN 相当于关系数据库(Oracle/MySQL)中的主键(primary key),是唯一的。属性由类型(type)和一个或者多个值(value)组成,相当于关系数据库中字段的概念。看看下面的比喻: > 假设你要树上的一个苹果(一条记录),你怎么告诉园丁它的位置呢?当然首先要说明是哪一棵树(dc,相当于MYSQL的DB),然后是从树根到那个苹果所经过的所有“分叉”(ou),最后就是这个苹果的名字(uid,相当于MySQL表主键id)。好了!这时我们可以清晰的指明这个苹果的位置了 总结一下LDAP树形数据库如下: DC (Domain Component) :一条记录的详细位置 CN (Common Name) :一条记录所属区域 (哪一颗树) OU (Organizational Unit) :一条记录所属组织 (哪一个分支) CN/uid:一条记录的名字/ID (哪一个苹果名字) LDAP目录树的最顶部就是根,也就是所谓的“基准DN"。 **为什么要用LDAP目录树来存储数据,用MySQL不行吗,为什么非要搞出一个树形的数据库呢?** 是因为用树形结构存储数据,查询效率更高(具体为什么,可以看一下关系型数据库索引的实现原理——B树/B+树)。在某些特定的场景下,使用树形数据库更理想。比如:需要储存大量的数据,而且数据不是经常更改,需要很快速的查找。 ## Docker搭建OpenLDAP服务器 ## **拉取openldap镜像** docker pull osixia/openldap:latest ![在这里插入图片描述][20201202145830805.png] **运行** sudo docker run -itd -p 389:389 --name ldap-server --restart=always --env LDAP_ORGANISATION="example" --env LDAP_DOMAIN="example.com" --env LDAP_ADMIN_PASSWORD="123456" --detach osixia/openldap:latest ![在这里插入图片描述][20201202145922156.png] **查看OpenLDAP相关信息** docker ps | grep openldap ![在这里插入图片描述][20201202150340445.png]**进入容器** docker exec -it my-openldap-container bash ![在这里插入图片描述][20201202150735574.png] **测试配置文件** 使用slaptest可以确认配置文件信息是否正确 slaptest ![在这里插入图片描述][20201202150800208.png] **修改国内镜像源** [https://www.cnblogs.com/xlizi/p/13452554.html][https_www.cnblogs.com_xlizi_p_13452554.html] ## 使用ldapsearch命令进行数据查询 ## **查询Option介绍** <table> <thead> <tr> <th>Option</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>-H</td> <td>ldapuri,格式为ldap://机器名或者IP:端口号,不能与-h和-p同时使用</td> </tr> <tr> <td>-h</td> <td>LDAP服务器IP或者可解析的hostname,与-p可结合使用,不能与-H同时使用</td> </tr> <tr> <td>-p</td> <td>LDAP服务器端口号,与-h可结合使用,不能与-H同时使用</td> </tr> <tr> <td>-D</td> <td>所绑定的服务器的DN</td> </tr> <tr> <td>-x</td> <td>使用简单认证方式</td> </tr> <tr> <td>-w</td> <td>绑定DN的密码,与-W二者选一</td> </tr> <tr> <td>-W</td> <td>不输入密码,会交互式的提示用户输入密码,与-w二者选一</td> </tr> <tr> <td>-f</td> <td>指定输入条件,在RFC 4515中有更详细的说明</td> </tr> <tr> <td>-c</td> <td>出错后忽略当前错误继续执行,缺省情况下遇到错误即终止</td> </tr> <tr> <td>-n</td> <td>模拟操作但并不实际执行,用于验证,常与-v一同使用进行问题定位</td> </tr> <tr> <td>-v</td> <td>显示详细信息</td> </tr> <tr> <td>-d</td> <td>显示debug信息,可设定级别</td> </tr> <tr> <td>-s</td> <td>指定搜索范围, 可选值:base/one/sub/children</td> </tr> </tbody> </table> *指定ldapuri查询* ldapsearch -x -H ldap://localhost:389 -b dc=example,dc=org -D "cn=admin,dc=example,dc=org" -w admin *指定主机名和端口号* ldapsearch -x -h ldap://192.168.23.198 -p 389 -b cn=example,dc=org -D "cn=admin,dc=example,dc=org" -w admin *指定过滤条件:按照dn进行过滤* ldapsearch -x -H ldap://localhost -b cn=admin,dc=example,dc=org -D "cn=admin,dc=example,dc=org" -w admin *使用模糊匹配* 查看当期根下的ou信息 ldapsearch -x -H ldap://localhost -b dc=example,dc=org -D "cn=admin,dc=example,dc=org" -w admin "ou=*" *使用cn=xxx,dc=xxx,ou=xxx进行过滤* ldapsearch -x -H ldap://localhost -b dc=example,dc=org -D "cn=admin,dc=example,dc=org" -w admin "cn=admin" ldapsearch -x -H ldap://localhost -b dc=example,dc=org -D "cn=admin,dc=example,dc=org" -w admin "ou=People" ldapsearch -x -H ldap://localhost -b dc=example,dc=org -D "cn=admin,dc=example,dc=org" -w admin "dc=example" *返回指定条件* 后面可以加sn cn title mail uid ldapsearch -x -H ldap://localhost -b cn=admin,dc=example,dc=org -D "cn=admin,dc=example,dc=org" -w admin sn cn title mail uid *容器外查询* docker exec -it my-openldap-container ldapsearch -x -H ldap://localhost -b dc=example,dc=org -D "cn=admin,dc=example,dc=org" -w admin 参考: [https://www.jianshu.com/p/7e4d99f6baaf][https_www.jianshu.com_p_7e4d99f6baaf] [20201202145830805.png]: /images/20221120/6407b8bf1e9c4e239ea2ab4148437f68.png [20201202145922156.png]: /images/20221120/f6e168fe119644b780a6e050454932d5.png [20201202150340445.png]: /images/20221120/7bd98029062b44f9bdc5a66078bc7e8b.png [20201202150735574.png]: https://img-blog.csdnimg.cn/20201202150735574.png [20201202150800208.png]: https://img-blog.csdnimg.cn/20201202150800208.png [https_www.cnblogs.com_xlizi_p_13452554.html]: https://www.cnblogs.com/xlizi/p/13452554.html [https_www.jianshu.com_p_7e4d99f6baaf]: https://www.jianshu.com/p/7e4d99f6baaf
相关 LDAP [http://www.cnblogs.com/obpm/archive/2010/08/28/1811065.html][http_www.cnblogs.com_obpm_ 快来打我*/ 2023年01月18日 09:05/ 0 赞/ 152 阅读
相关 LDAP查询 1.查询的命令 \-p 指明端口号 \-h 指明主机名 \-D 指明DN 管理员帐号 \-W指明采样手动输入密码的方式 \-w 后面加密码,等同于-W 输 不念不忘少年蓝@/ 2022年12月27日 09:19/ 0 赞/ 512 阅读
相关 LDAP学习 什么是LDAP? LDAP(Lightweight Directory Access Protocol),轻量级目录访问协议。LDAP是一种通讯协议,LDAP支持TCP/ £神魔★判官ぃ/ 2022年12月25日 14:51/ 0 赞/ 217 阅读
相关 Ldap笔记 【1】ldap介绍 【2】centos搭建OpenLDAP 【3】LDAP的objectClass及Attribute 【4】Ubuntu下安装OpenLDAP图形 喜欢ヅ旅行/ 2022年12月03日 09:43/ 0 赞/ 183 阅读
相关 LDAP学习资料整理 转自http://blog.csdn.net/arhaiyun/article/details/8937468 LDAP中的objectClass与Attribut 迈不过友情╰/ 2022年09月24日 13:27/ 0 赞/ 287 阅读
相关 LDAP介绍 1. LDAP介绍 4 1.1. LDAP是什么 4 1.2. LDAP是电话簿 4 1.3. LDAP是不是数据库 4 2. LDAP的特点 5 2.1. 朱雀/ 2022年08月26日 15:28/ 0 赞/ 235 阅读
相关 ldap 1. 目录服务 目录是一个为查询、浏览和搜索而优化的专业分布式数据库,它呈树状结构组织数据,就好象Linux/Unix系统中的文件目录一样。目录数据库和关系数据库不同,它 忘是亡心i/ 2022年06月13日 22:25/ 0 赞/ 268 阅读
相关 LDAP入门 LDAP入门 首先要先理解什么是LDAP,当时我看了很多解释,也是云里雾里,弄不清楚。在这里给大家稍微捋一捋。 首先LDAP是一种通讯协议,LDAP支持T ﹏ヽ暗。殇╰゛Y/ 2022年06月03日 20:19/ 0 赞/ 273 阅读
相关 学习Ldap 最近刚入职新公司,接了一个关于Ldap的需求,这边开始着手学习一下有关Ldap的知识. 以前在上一家公司接触过Ldap,只知道它主要为了存放用户名密码的一个服务器.具体的还是 深藏阁楼爱情的钟/ 2022年05月14日 11:53/ 0 赞/ 285 阅读
相关 ldap服务器 LDAP快速入门 1. LDAP简介 LDAP(轻量级目录访问协议,Lightweight Directory Access Protocol)是实现提供被称为目录 浅浅的花香味﹌/ 2022年01月07日 00:29/ 0 赞/ 331 阅读
还没有评论,来说两句吧...