今天参加一个公司的面试,面试官问到我LDAP协议,惭愧我竟然对其不了解。回来赶紧恶补下,摘抄如下,以供日后阅读。
---------------------------------------------------------------------------------------------------------
LDAP的英文全称是Lightweight Directory Access Protocol,即轻量级目录访问协议.我们知道,人们对计算机网络的使用和管理涉及了各种庞杂的资源,信息.为了提高性能,便于使用,有效管理分布式应用的服务,资源,用户及别的对象信息,这些信息需要清晰,一致地组织起来.基于这样的需求,描述各种用户,应用,文件,打印机和其它可从网络访问的资源的信息被集中到一个特殊的数据库中,这种数据库被称为目录.目录存放对象的公开或非公开的信息,这些信息以某种顺序组织,描述了每个对象的细节.电话簿,图书馆藏书卡片目录就是常见的目录.
LDAP是基于X.500标准的,访问 X.500 目录需要某种协议,例如:目录访问协议 (DAP).然而,DAP 需要大量的系统资源和支持机制来处理复杂的协议.LDAP 仅通过使用原始 X.500目录存取协议 (DAP) 的功能子集而减少了所需的系统资源消耗,而且可以根据需要定制.此外,与X.500不同,LDAP支持TCP/IP,这对访问Internet是必须的.
为了能对LDAP协议进行更好的理解,我们需要对以下概念有初步的认识:
目录:Directory,存放对象的信息,这些信息以某种顺序组织,详细描述每个对象.
目录信息树:DIT,Directory Information Tree,目录条目的集合构成了目录信息树.
条目:Entry,目录信息树中的一个结点,是一个对象信息的集合,是目录信息中最基本的
单位,包含该对象的一系列属性.
属性:Attribute,属性描述对象的特征.一个属性由属性类型(type)和一个或多个属性值
(values)构成.
相对标识名:RDN,Relative Distinguished Name,条目的名字.
唯一标识名:DN,Distinguished Name,在一个目录信息树中唯一标识一个条目的名字.
LDAP(轻量级目录访问协议,Lightweight Directory Access Protocol)是实现提供被称为目录服务的信息服务。 目录服务是一种特殊的数据库系统,其专门针对读取,浏览和搜索操作进行了特定的优化。目录一般用来包含描述性的,基于属性的信息并支持精细复杂的过滤能力。目录一般不支持通用数据库针对大量更新操作操作需要的
复杂的事务管理或回卷策略。而目录服务的更新则一般都非常简单。这种目录可以存储包括个人信息、web链结、 jpeg图像等各种信息。为了访问存储在目录中的信息,就需要使用运行在TCP/IP之上的访问协议—LDAP。
LDAP目录中的信息是是按照树型结构组织,具体信息存储在条目(entry)的数据结构中。条目相当于关系数据库中
表的记录;条目是具有区别名DN(Distinguished Name)的属性(Attribute),DN是用来引用条目的,DN相当于
关系数据库表中的关键字(Primary Key)。属性由类型(Type)和一个或多个值(Values)组成,相当于关系数据库中的字段(Field)由字段名和数据类型组成,只是为了方便检索的需要,LDAP中的Type可以有多个Value, 而不是关系数据库中为降低数据的冗余性要求实现的各个域必须是不相关的。LDAP中条目的组织一般按照地理位置和组织关系进行组织,非常的直观。LDAP把数据存放在文件中,为提高效率可以使用基于索引的文件数据库,而不是关系数据库。类型的一个例子就是mail,其值将是一个电子邮件地址。
WebLogic的内置的LDAP Server支持IETF LDAP为LDAPv3制定的控制访问模型。下面这个片断将讲述在内置的LDAP Server中怎样实现控制访问。可以通过编辑访问控制文件来将这些规则直接应用到目录的入口。WebLogic中的访问控制文件是acls.prop。在Server的lib中可以找到这个文件。
这个文件的所有访问控制规则都被注释掉了,如果想更改这些规则,你要手工更改这个文件。注意:WebLogic Server内置的LDAP Server在默认的情况下只允许Admin帐号访问,WebLogic Server的security providers
只使用Admin帐号访问内置的LDAP Server。如果你不想使用外部的LDAP Brower访问WebLogic Server的内置的LDAP Server,
或者你只想使用Admin帐号访问内置的LDAP Server,你不需要编辑acls.prop文件,
访问控制文件(The Access Control File)
访问控制文件(acls.prop)包含内置的LDAP Server的整个目录的完整的访问控制列表(ACL)。这个文件中的每一行都包含一个访问控制规则。一个访问控制规则由下面接个部分组成:
访问控制位置(Access Control Location)
每个访问控制规则都应用于LDAP目录中的一个给定的位置。这个位置通常是一个区别命名(DN),但有一个例外,这就是[root],如果访问控制规则应用到整个目录,则只需要指定位置为[root]就可以了!
如果被访问或更改的入口的位置与访问控制规则指定的位置不相等,或在访问控制规则指定的位置的下级,则这个访问控制规则将不会被执行。
访问控制范围(Access Control Scope)
访问控制范围有2种:
Entry-一个Entry范围的访问控制列表只在下面的情况下被执行:
LDAP目录的入口的DN与访问控制规则指定的位置相同。这样的规则对于包含了比并行和副入口更敏感信息的单独入口非常有用。
Subtree-意味着访问控制规则指定的位置及子树都可以适用这条规则。
如果Entry与Subtree在访问控制规则中有冲突,则Entry要优先于Subtree。
访问权限(Access Rights)
访问权限应用于整个对象或对象的属性,有2个值:grant(准许)或deny(拒绝)。访问权限指定了LDAP操作的类型。
许可(grant或deny)
应用规则的属性(attribute)
允许或拒绝访问的主题(subject)
在weblogic可以编写程序来访问LDAP.上手时可以选择JXplorer工具。
1.LDAP Server及LDAP Browser:
对于WLS LDAP为理解起来简单,去掉限制的方法是修改bea\weblogic81\server\lib\acls.prop文件后。修改方法:
在该文件最后添加以下几行。
[root]|entry#grant:s,r,o,w,c,m#[all]#public
[root]|subtree#grant:s,r,o,w,c,m#[all]#public:
[root]|subtree#grant:a,d,e,i,n,b,t#[entry]#public:
cn=schema|entry#grant:s,r,o,w,c,m#[all]#public:
cn=schema|entry#grant:a,d,e,i,n,b,t#[entry]#public:
注意,该文件中这些行之间,以及其他行之间不能有空行,否则启动WLS会报错的。修改好之后就可以启动WLS了,
启动后进入Console里修改Ldap Server的密码。密码修改完后需要再重新启动一次WLS。
LDAP刚上手的时候没有方便的工具会很费劲。我看了CSDN上“兔八哥”的文章,用JXplorer,感觉很不错。
想看这篇文章,到CSDN上搜一下“兔八哥”,系列中No.12就是关于JXplorer的配置和使用。我的连接参数如下:
Host:localhost//根据实际修改
Port:7001
Protocol:LDAP v3
Base DN:dc=ldapdomain//根据实际修改
Level:User+Password
User DN:cn=Admin
Password:weblogic//根据实际修改