LDAP 是什么协议,ldap 是什么协议下的协议详解

LDAP全称Lightweight Directory Access Protocol,中文名称轻量级目录访问协议。名称里的目录两个字常常被忽略。它不属于数据库,也不是文件系统,更像是一套供程序读取、以树形结构组织的通讯录。企业内部员工账号、所属部门、邮箱、分机号,打印机、VPN账号这类信息,都可以放进这棵目录树,依靠LDAP协议完成查询、修改、身份校验。协议基于TCP/IP,属于应用层协议,默认端口389,加密版本LDAPS使用636端口。

理解LDAP,可以先看它的起源。早年存在一套X.500目录服务标准,设计完整但体量庞大,底层依托OSI网络模型,和当时普及的TCP/IP适配性很差。开发者精简了X.500中的目录访问部分DAP,剔除冗余内容,改造为可以运行在TCP/IP上的协议,也就是LDAP。简单来说LDAP是DAP轻量化替代方案,并不是凭空开发的全新协议。保留了X.500目录模型,同时精简协议本身,大幅降低部署难度。

LDAP 是什么协议,ldap 是什么协议下的协议详解

LDAP存储数据的思路和关系数据库差异很大。关系数据库依靠建表、主键外键、SQL关联查询,LDAP不使用这套机制,采用目录信息树DIT结构。树中每一个节点被称作条目entry,条目由各类属性和对应数值组成。每个条目拥有唯一标识DN,也就是可分辨名称,示例uid=zhangsan,ou=people,dc=example,dc=com。DN从右向左解析,dc=com是根节点,dc=example为下一级,ou=people代表组织单位,uid=zhangsan对应具体用户。RDN是相对DN,代表条目自身的那段标识。属性方面,objectClass决定条目支持哪些属性,cn是通用名称,mail存储邮箱,uid是用户ID。schema用来定义规则,规定不同对象类必须携带、允许携带的属性,不符合规则的数据无法写入。

协议层面定义了多组请求与响应。最核心的bind用于身份认证,客户端向服务器提交身份信息,校验账号密码或者票据。search用来检索,能够指定搜索基准DN、搜索范围base、one、sub,过滤条件以及需要返回的属性。filter语法灵活,(objectClass=person)、(&(uid=zhangsan)(mail=*))这类写法,类似布尔逻辑。compare用来比对属性数值,add、modify、delete、modifyDN分别对应新增、修改、删除、重命名条目。还有abandon放弃请求、StartTLS这类扩展操作。所有操作编码为ASN.1 BER二进制格式,肉眼无法直接读取,需要工具解析。

认证方式分为多种。匿名认证允许直接连接,权限一般仅开放公开信息读取。简单认证传输明文密码,389端口环境下密码在网络裸传,生产环境要么启用LDAPS,或者开启StartTLS把连接升级加密。SASL属于高级认证框架,支持Kerberos、DIGEST-MD5等机制,AD环境里Kerberos应用较多。很多应用对接LDAP的配置项会区分绑定DN和绑定密码,绑定DN就是用于认证的账号,一般使用只读权限的服务账号,应用依靠这个账号检索用户、校验密码。

对比关系数据库,LDAP定位很清晰。适合读多写少场景,查询性能优秀,适合像查询员工所属部门负责人、校验账号密码这类需求。不适合处理复杂事务、大批量报表统计。树形结构天然适配组织架构,企业经常拿来搭建统一身份认证、单点登录、邮件通讯录、VPN账号源,GitLab、Jenkins也常选用它作为用户目录。OpenLDAP是使用最多的开源实现,Apache Directory Server、389 Directory Server也有不少使用者。微软Active Directory本质属于目录服务,兼容LDAP协议,但附带大量Windows专属扩展,像组策略、Kerberos域控,所以AD可以用LDAP客户端查询,但LDAP不等于AD。

实际部署使用会遇到不少坑。DN里面逗号、等号不能写错,多余空格就会检索失败。schema不能随意修改,新增自定义属性要先扩展schema,修改完成需要重启服务。搜索范围选用sub,基准DN层级过高,会造成性能下降,尽量从具体ou节点向下检索。LDAP URL格式ldap://host:port/dn?attributes?scope?filter,书写正确可以直接定位对应结果。明文389端口仅适合内网,公网环境必须使用636端口或者StartTLS,否则密码、目录数据直接裸漏传输。

LDAP算不上新技术,但是存续时间远超同期很多协议。核心原因在于身份、目录管理底层需求长期稳定,树形结构搭配简易查询,足够满足需求,稳定性好,配套生态成熟。很多环境一次部署可以稳定运行多年。想要上手实操,可以先搭建OpenLDAP测试环境,使用Apache Directory Studio连接,手动新建条目,调试过滤语句,实操比阅读大量文档效果更好。

免责声明:本文提供的方法与建议仅供技术参考,实际部署效果受机房环境、运营商线路、系统配置等多重因素影响。请在专业人员指导下操作,因自行操作导致的业务损失本站不承担责任。

相关推荐

bgp bgp 是哪一层网络协议知识科普

BGP全称Border Gateway Protocol,中文叫边界网关协议。名字里面带边界、网关,乍听像门禁管控工具,实际作用更像是互联网各大网络之间互相传递路由信息,告诉对方自己能抵达哪些网段,双方确认最