OpenLDAP使用疑惑解答及使用Java完成LDAP身份认证

上传人:cl****1 文档编号:421748567 上传时间:2022-12-30 格式:DOCX 页数:12 大小:241.29KB
返回 下载 相关 举报
OpenLDAP使用疑惑解答及使用Java完成LDAP身份认证_第1页
第1页 / 共12页
OpenLDAP使用疑惑解答及使用Java完成LDAP身份认证_第2页
第2页 / 共12页
OpenLDAP使用疑惑解答及使用Java完成LDAP身份认证_第3页
第3页 / 共12页
OpenLDAP使用疑惑解答及使用Java完成LDAP身份认证_第4页
第4页 / 共12页
OpenLDAP使用疑惑解答及使用Java完成LDAP身份认证_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《OpenLDAP使用疑惑解答及使用Java完成LDAP身份认证》由会员分享,可在线阅读,更多相关《OpenLDAP使用疑惑解答及使用Java完成LDAP身份认证(12页珍藏版)》请在金锄头文库上搜索。

1、导读LDAP (轻量级目录访问协议,Lightweight Directory Access Protocol)是实现提供被称为目 录服务的信息服务。目录服务是一种特殊的数据库系统,其专门针对读取,浏览和搜索操作 进行了特定的优化。目录一般用来包含描述性的,基于属性的信息并支持精细复杂的过滤能 力。目录一般不支持通用数据库针对大量更新操作操作需要的复杂的事务管理或回卷策略。 而目录服务的更新则一般都非常简单。这种目录可以存储包括个人信息、web链结、jpeg 图像等各种信息。为了访问存储在目录中的信息,就需要使用运行在TCP/IP之上的访问协 议一LDAP。LDAP目录中的信息是是按照树型结构

2、组织,具体信息存储在条目(entry)的数据结构中。常 见的例子是通讯簿,由以字母顺序排列的名字、地址和电话号码组成。目录服务与关系数据库之间的主要区别在于:二者都允许对存储数据进行访问,只是目录主 要用于读取,其查询的效率很高,而关系数据库则是为读写而设计的。也就是目录服务不适 于进行频繁的更新,属于典型的分布式结构。总结:对于查询操作多于更新操作的(认证)系统来说,使用Ope nLDAP是一个比关系数 据库如MySq、PostgreSQL等更好的选择。LDAP 的功能在LDAP的功能模型中定义了一系列利用LDAP协议的操作,主要包含以下4部分: 查询操作:允许查询目录和取得数据,其查询性能

3、比关系数据库好。更新操作:目录的更新操作没关系数据库方便,更新性能较差,但也同样允许进行添加、删 除、修改等操作。复制操作:前面也提到过, LDAP 是一种典型的分布式结构,提供复制操作,可将主服务器 的数据的更新复制到设置的从服务器中。认证和管理操作:允许客户端在目录中识别自己,并且能够控制一个会话的性质。而本文所要将的OpenLDAP就是一个优秀的开源的LDAP实现。OpenLDAP 安装配置及疑惑解答1. 安装和配置 OpenLDAP安装软件非常简单,但在配置过程中遇到了不少坎坷,不是服务启动不成功就是验证不成功。 具体的安装和配置方法网上一大把,但都参差不齐,主要是因为新旧版本的Ope

4、 nLDAP不 同,配置方法有很大的改动。下面给出网上几个还算靠谱的Linux和Windows两个平台下安装该软件的方法:1) ubuntu安装LDAP:安装方法靠谱,但配置说的不太清楚,配置注意事项看后面。2) Ubuntu OpenLDAP Server:官方教程,最值得借鉴,是英文的,这里有中文版的,但没 英文的清晰,说的比较简单。3) Linux下安装openldap:二进制包安装方法,适用于非Ubuntu的Linux系统,稍微有点 麻烦,在安装OpenlDAP之前还需要安装Berkeley DB,但配置灵活,可以自定义安装路径 什么的。后面的配置也没说清楚,主要看安装方法。4) Li

5、nux服务器部署系列之七OpenLDAP篇:另一篇较详细的二进制安装方法及配置。4) Windows下OpenLDAP的安装及使用:介绍了 LDAP的一些基础知识和Windows下安 装方法。5) 图文介绍 openLDAP 在 windows 上的安装配置:比较详细,值得一看。上面给出的这几个链接虽然还不错,但还是欠缺了些什么?对,就是讲解,网上给出的教程 都是手把手教你如何安装和配置,而没有说明版本差异、具体配置的含义及为什么这样配置, 如果因为版本或环境差异,你按其方法配置不成功,你也不知道哪里出的问题,因此建议还 是先熟悉LDAP的基础知识,配置文件含义然后再试着安装。2. OpenL

6、DAP疑惑解答下面根据我自己的经验,给出几个安装和配置注意事项,供参考。疑惑1细心的人会发现有的教程说要配置主机DNS,添加与LDAP相关的域名,而大部 分教程都没有提及这个,那么到底要不要配置呢?解答:当然需要配置。安装好OpenLDAP后首先需要配置slapd.conf这个文件,其中里面 有suffixdc=example, dc=com这样一句需要自己配置,这两个dc代表什么意思呢?其实dc就是“domai nComp onen t” 也就是域名的组成部分,准确的说是主机域名的后缀组成部分,如果这里的配置与你的主机 域名不对应的话,服务一般是启动不了的。那么怎么配置域名呢? Linux和

7、Windows下的 配置文件如下:Linux 下:/etc/hostsWindows 下:C:WindowsSystem32driversetchosts需要在hosts文件里添加一条域名(如果没配置的话),格式如下:hostname比如我的主机名是mi n,并添加的域名配置是: min那么相应的我就需要在slapd.co nf里这样配置suffix:suffixdc=alexia, dc=cn当然这里域名后缀不一定只有两级,也可以是,然后suffix就应 该是“dc=example, dc=com, dc=c n,这随便你怎么设置了,只要对应就行。疑惑2:很多版本的slapd conf里默认

8、都配置了下面两个变量:modulepath/usr/lib/ldapmoduleloadback_BACKEND这是什么意思?需要改动吗?解答:这是数据库database的backend, 般slapd.conf里配置的database都是bdb,也 就是Berkeley DB,有的也许是hdb,其实也是Berkeley DB,只是两个不同的存储引擎(就 像Mysql有MylSAM和InnoDB两个不同的存储引擎一样)。而modulepath和moduleload 指定了动态模块路径及动态装载的后端模块,因为OpenLDAP默认是用Berkeley DB存储数 据的,如果你有动态的数据需要装载

9、,那么就需要配置这两个参数,对于一般用户将这两个 注释掉即可。疑惑3: OpenLDAP默认采用Berkeley DB存储数据,那么可以换用其它的关系数据库 吗?具体如何配置呢?解答:当然可以。首先需要明确ldap数据模型来自RDBMS(关系数据库模型),而并没有 指定一定是哪个DB,只要是关系数据库都可以作为LDAP的后台,那么你为什么会想用其 它的数据库代替自带的Berkeley DB呢?我想可能是性能相关了,对于少量数据你用哪个都 可以,但若涉及到稍大点的数据,比如成千上万的用户查询,那么Berkeley DB的性能就不 可观了,而且Berkeley DB管理起来也不太方便,毕竟对这个数

10、据库熟悉的人不多,如果能 换作我们经常使用的数据库,不仅性能得到提升,管理起来也十分容易,岂不是一举多得。 具体怎么配置了,请参考这篇文章:用postgresql作后台的openldap,以PostgreSQL作为 例子进行讲解。疑惑4:新旧版本的OpenLDAP到底有什么差异呢?解答:简单一句话就是:旧版本的OpenLDAP配置文件一般是slapd.conf (路径可能是 /etc/openldap,也可能是/usr/local/openldap,甚至可能是/usr/share/slapd/,不同版本不 同安装不同系统都可能不同,可使用locate slapd.conf进行查找正确的路径),

11、而新版本(我 测试的新版本是2.4.31 )的Ope nLDAP服务运行时并不会读取该配置文件,而是从slapd.d 目录(一般与slapd.conf在同一目录下)中读取相关信息,我们需要把该目录下的数据删掉, 然后利用我们在slapd.co nf里配置的信息重新生成配置数据。这也可能是你启动服务后运行 ldap相关命令却出现“ldap_bi nd: In valid crede ntials (49)错误的主要原因。具体怎么重新 生成配置数据请看参考资料。疑惑 5:自定义的 ldif 数据文件中的 objectclass后的 domain、top、organizationalUnit、 in

12、etOrgPerson等等都是什么意思,可以随便写吗?解答:存储LDAP配置信息及目录内容的标准文本文件格式是LDIF(LDAP InterchangeFormat),使用文本文件来格式来存储这些信息是为了方便读取和修改,这也是其它大多数 服务配置文件所采取的格式。LDIF文件常用来向目录导入或更改记录信息,这些信息需要 按照LDAP中schema的格式进行组织,并会接受schema的检查,如果不符合其要求的格 式将会出现报错信息。因此,ldif文件中的属性都定义在各大schema中,其中objectclass 是对象的类属性,不能随便填写,而应与schema中一致。一般slapd.conf文

13、件的头部都包 含了这些schema:include./etc/openldap/schema/core.schemainclude./etc/openldap/schema/cosine.schemainclude./etc/openldap/schema/inetorgperson.schemainclude./etc/openldap/schema/nis.schemainclude./etc/openldap/schema/krb5-kdc.schemainclude./etc/openldap/schema/RADIUS-LDAPv3.schemainclude./etc/openld

14、ap/schema/samba.schema其中前三个是比较重要的schema,定义了我们所需要的各个类,比如ldif中一般先定义一 个根节点,其相应的objectclass 般是domain和top,而根节点下的ou属性即定义组节 点(group)的 objectclass 般是 organizationalUnit, group 下可以是 group 也可以是用户 节点,用户节点的objectclass 一般是inetOrgPerson。而各个节点的一系列属性如用户节点 的uid、mail、userPassword、sn等等都定义在schema中相关的objectclass里,可以自己 查

15、找看看。疑惑6: OpenLDAP认证用户uid时默认是不区分大小写的,也就是“alexia”与“AleXia” 是同一个用户,在有些情况下这并不合理,能配置使得认证时能区分大小写吗? 解答:以我目前的经验来看,旧版本的OpenLDAP是可以配置区分大小写的,而新版本的 Ope nLDAP却配置不了。为什么这么说呢?这里就涉及到“matching rules这个概念了,即匹配规则,就是各个属性按什么样的规则进 行匹配,比如是否区分大小写、是否进行数字匹配等等,这里有详细的官方匹配规则描述。 比如旧版本的core.schema里有下面这样一段:attributetype ( 0.9.2342.19200300.100.1.1NAME ( uid userid)DESC RFC1274: user identifierEQUALITY caselgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15256)从字面上也可以看出, 其中 caseIgnoreMatch 和 caseIgnoreSubstringsMatch 就定乂了 Uid 或 userid 属性匹配时不区

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 建筑资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号