1 LDAP入门
11 定义
LDAP是轻量目录访问协议(LightweightDirectory Access Protocol)的缩写,LDAP标准实际上是在X500标准基础上产生的一个简化版本。
12 目录结构
LDAP也可以说成是一种数据库,也有client端和server端。server端是用来存放数据,client端用于 *** 作增删改查等 *** 作,通常说的LDAP是指运行这个数据库的服务器。只不过,LDAP数据库结构为树结构,数据存储在叶子节点上。
因此,在LDAP中,位置可以描述如下
因此,苹果redApple的位置为
dn标识一条记录,描述了数据的详细路径。因此,LDAP树形数据库如下
因此,LDAP树形结构在存储大量数据时,查询效率更高,实现迅速查找,可以应用于域验证等。
13 命名格式
LDAP协议中采用的命名格式常用的有如下两种:LDAP URL 和X500。
任何一个支持LDAP 的客户都可以利用LDAP名通过LDAP协议访问活动目录,LDAP名不像普通的Internet URL名字那么直观,但是LDAP名往往隐藏在应用系统的内部,最终用户很少直接使用LDAP 名。LDAP 名使用X500 命名规 范,也称为属性化命名法,包括活动目录服务所在的服务器以及对象的属性信息。
2 AD入门
21 AD定义
AD是Active Directory的缩写,AD是LDAP的一个应用实例,而不应该是LDAP本身。比如:windows域控的用户、权限管理应该是微软公司使用LDAP存储了一些数据来解决域控这个具体问题,只是AD顺便还提供了用户接口,也可以利用ActiveDirectory当做LDAP服务器存放一些自己的东西而已。比如LDAP是关系型数据库,微软自己在库中建立了几个表,每个表都定义好了字段。显然这些表和字段都是根据微软自己的需求定制的,而不是LDAP协议的规定。然后微软将LDAP做了一些封装接口,用户可以利用这些接口写程序 *** 作LDAP,使得ActiveDirectory也成了一个LDAP服务器。
22 作用
221 用户服务
管理用户的域账号、用户信息、企业通信录(与电子邮箱系统集成)、用户组管理、用户身份认证、用户授权管理、按需实施组管理策略等。这里不单单指某些线上的应用更多的是指真实的计算机,服务器等。
222 计算机管理
管理服务器及客户端计算机账户、所有服务器及客户端计算机加入域管理并按需实施组策略。
223 资源管理
管理打印机、文件共享服务、网络资源等实施组策略。
224 应用系统的支持
对于电子邮件(Exchange)、在线及时通讯(Lync)、企业信息管理(SharePoint)、微软CRM&ERP等业务系统提供数据认证(身份认证、数据集成、组织规则等)。这里不单是微软产品的集成,其它的业务系统根据公用接口的方式一样可以嵌入进来。
225 客户端桌面管理
系统管理员可以集中的配置各种桌面配置策略,如:用户适用域中资源权限限制、界面功能的限制、应用程序执行特征的限制、网络连接限制、安全配置限制等。
23 AD域结构常用对象
231 域(Domain)
域是AD的根,是AD的管理单位。域中包含着大量的域对象,如:组织单位(Organizational Unit),组(Group),用户(User),计算机(Computer),联系人(Contact),打印机,安全策略等。
可简单理解为:公司总部。
232 组织单位(Organization Unit)
组织单位简称为OU是一个容器对象,可以把域中的对象组织成逻辑组,帮助网络管理员简化管理组。组织单位可以包含下列类型的对象:用户,计算机,工作组,打印机,安全策略,其他组织单位等。可以在组织单位基础上部署组策略,统一管理组织单位中的域对象。
可以简单理解为:分公司。
233 群组(Group)
群组是一批具有相同管理任务的用户账户,计算机账户或者其他域对象的一个集合。例如公司的开发组,产品组,运维组等等。可以简单理解为分公司的某事业部。
群组类型分为两类:
234 用户(User)
AD中域用户是最小的管理单位,域用户最容易管理又最难管理,如果赋予域用户的权限过大,将带来安全隐患,如果权限过小域用户无法正常工作。可简单理解成为某个工作人员。
域用户的类型,域中常见用户类型分为:
一个大致的AD如下所示:
总之:Active Directory =LDAP服务器 LDAP应用(Windows域控)。ActiveDirectory先实现一个LDAP服务器,然后自己先用这个LDAP服务器实现了自己的一个具体应用(域控)。
3 使用LDAP *** 作AD域
特别注意:Java *** 作查询域用户信息获取到的数据和域管理员在电脑上 *** 作查询的数据可能会存在差异(同一个意思的表示字段,两者可能不同)。
连接ad域有两个地址:ldap://XXXXXcom:389 和 ldap://XXXXXcom:636(SSL)。
端口389用于一般的连接,例如登录,查询等非密码 *** 作,端口636安全性较高,用户密码相关 *** 作,例如修改密码等。
域控可能有多台服务器,之间数据同步不及时,可能会导致已经修改的数据被覆盖掉,这个要么域控缩短同步的时间差,要么同时修改每一台服务器的数据。
31 389登录
32 636登录验证(需要导入证书)
33 查询域用户信息
34 重置用户密码
35 域账号解锁
总结
1、安装openldap-servers软件包2、查看ldap模板文件的存放位置:
3、拷贝ldap模板文件到配置文件目录并修改文件名为slapdconf。
4、删除/etc/openldap目录下原有的文件,保留下这几个文件,注意:以前学时是要删除schema文件,直留下三个,但是我测试时如果删除schema服务将失败。
5、修改slapdconf文件的权限:
6、修改sldapconf配置文件:如下:(主要配好红色的就ok,没有的都是被注释掉的)
复制代码
代码如下:
include /etc/openldap/schema/corbaschema
include /etc/openldap/schema/coreschema
include /etc/openldap/schema/cosineschema
include /etc/openldap/schema/duaconfschema
include /etc/openldap/schema/dyngroupschema
include /etc/openldap/schema/inetorgpersonschema
include /etc/openldap/schema/javaschema
include /etc/openldap/schema/miscschema
include /etc/openldap/schema/nisschema
include /etc/openldap/schema/openldapschema
include /etc/openldap/schema/ppolicyschema
include /etc/openldap/schema/collectiveschema
allow bind_v2
pidfile /var/run/openldap/slapdpid argsfile /var/run/openldap/slapdargs
database bdb suffix "dc=example,dc=com" checkpoint 1024 15 rootdn
"cn=Manager,dc=example,dc=com"
rootpw redhat
directory /var/lib/ldap
index objectClass eq,pres
index ou,cn,mail,surname,givenname eq,pres,sub
index uidNumber,gidNumber,loginShell eq,pres
index uid,memberUid eq,pres,sub
database monitor
access to by dnexact="cn=Manager,dc=example,dc=com" read by none
7、重启动ldap服务器:
8、创建ldap用户目录:
9、编辑一个自动创建ldap用户的脚本:
10 、执行此脚本添加用户:
11、把ldap用户,组分别导出来,到一个文件中:(例子只做了组)用户在、/etc/passwd下
12、安装软件包:
13、去它的目录下编译ldap用户组文件:
14、修改migrate_commonph文件:
15、执行/migrate_basepl文件,并导出到一个目录下边,进行进行修改,只留下最基本的三个配置:
16,、分别使用/migrate_passwdpl /migrate_grouppl编译我们已经导出的ldap用户和组文件: /mnt/user /mnt/group分别是从/etc/passwd /etc/group 导出的ldap用户和组文件
/date/userldif /date/groupldif 是编译后生成的文件要以ldif结尾
17、看下/date下我们编译好的几个文件:
18、添加ldap用户和组:
首先提示输入密码,其次添加成功。
还有个用户,必须首先执行baseldif文件,它是最基本的配置。
拉取镜像
运行镜像
本命令是ldap会默认创建一个admin用户,默认密码也是admin
也通过环境变量设置 LDAP 服务器的参数:
例子:
LDAP查询命令
通过 ldapsearch , ldapadd , ldapdelete , ldapmodify 等参数查询、新增、删除、修改内容信息。如下所示命令是对ldap进行一次查询
正常输出结果如下所示:
数据文件和配置文件外置安装方式介绍
拉取镜像
运行镜像
客户端界面
安装成功后输入 >需要。
使用非加密的ldap时,只能对AD域账号信息查询。如果要对AD域用户信息进行修改和新增 *** 作,必须使用(SSL)加密方式连接AD,需满足如下几个条件:① AD上需要安装证书服务。② 连接AD的主机上使用>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,其值将是一个电子邮件地址。
LDAP的信息是以树型结构存储的,在树根一般定义国家(c=CN)或域名(dc=com),在其下则往往定义一个或多个组织 (organization)(o=Acme)或组织单元(organizational units) (ou=People)。一个组织单元可能包含诸如所有雇员、大楼内的所有打印机等信息。此外,LDAP支持对条目能够和必须支持哪些属性进行控制,这是有一个特殊的称为对象类别(objectClass)的属性来实现的。该属性的值决定了该条目必须遵循的一些规则,其规定了该条目能够及至少应该包含哪些属性。例如:inetorgPerson对象类需要支持sn(surname)和cn(common name)属性,但也可以包含可选的如邮件,电话号码等属性。
下面是连接 Ldap的连接方法和大家分享下:
1static LdapConnection ldapConnection;
2 static string ldapServer;
3 static NetworkCredential credential;
4 static string targetOU;
5 static string pwd;
6 public void LdapBind()
7 {
8 ldapServer = "1721869204:389";
9 targetOU = "cn=Manager,dc=tst,dc=com";
10 pwd = "000000";
11
12 //credential = new NetworkCredential(StringEmpty, StringEmpty);
13 credential = new NetworkCredential(targetOU, pwd);
14
15
16 string dn = "";
17
18 //ldapConnection = new LdapConnection(new LdapDirectoryIdentifier(ldapServer));
19 //ldapConnectionSessionOptionsProtocolVersion = 3;//Ldap协议版本
20 //ldapConnectionAuthType = AuthTypeAnonymous;//不传递密码进行连接
21
22 ldapConnection = new LdapConnection(ldapServer);
23 ldapConnectionAuthType = AuthTypeBasic;
24 ldapConnectionCredential = credential;
25
26 try
27 {
28 ConsoleWriteLine("链接");
29 ldapConnectionBind();
30 ConsoleWriteLine("链接成功");
31
32 }
33 catch (Exception ee)
34 {
35 ConsoleWriteLine(eeMessage);
36 }
37
38
39 ldapConnectionDispose();
40
41 }
注意
1、如果我们使用ldapConnectionAuthType = AuthTypeAnonymous; 的认证方式,就一定要让Dn与Pwd为空,实现匿名认证方式,如:
credential = new NetworkCredential(StringEmpty, StringEmpty);
2、使用c#连接Ldap服务器,还可以使用 Novell公司的NovellDirectoryLdap来实现。
转载仅供参考,版权属于原作者。祝你愉快,哦
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)