LDAP(一)之概念原理介绍

LDAP(一)之概念原理介绍,第1张

LDAP目录服务器是基于客户/服务器模式的。一个或者多个LDAP服务器包含着组成整个目录信息树(DIT)的数据。客户连接到服务器并且并发一个请求(request)。然后服务器要么以一个回答(answer)予以回应,要么给出一个指针,客户可以通过此指针获取到所需的数据(通常,该指针是指向另一个LDAP服务器)。无论客户连到哪个LDAP服务器,它看到的都是同一个目录视图(view)。这是LDAP这类全局目录服务的一个重要特征。

条目和属性的关系:

LDAP的信息模型是基于条目的(entry)。一个条目就是一些具有全局唯一的标识名(Distinguished Name,简写做DN)的属性的集合。DN用于无二义性的纸袋一个唯一的条目。条目的每一个属性都有一个类型(type),一个或者多个值(value)。类型往往是特定字符串的简写,比如用“cn”指代“common name”,或是"mail"指代电子邮件地址。值(value)的语法依赖于类型(type)。比如,类型为cn的属性可能包含值"候剑豪"。类型为mail的属性可能包含值“ frederick_hou@163com ”。类型为jpeg Photo的属性可能包含二进制格式的JPEG图像。

在LDAP中,条目是按树状的层次结构组织的。传统上,这个机构旺旺是代理界限或组织界限的反应。代表国家的条目位与整个目录树的顶层。之下的条目则代表各个州以及国家性的组织。在下面的条目则代表着组织单位,个人,打印机,文件,或者你所能想到的其他的东西。目录是也可以按照因特网域名组织结构,因为它允许按照DNS对目录服务进行定时,这种命名方式正变得越来越受欢迎。下图是按照域名进行组织的一个LADP目录树,相比传统的命名方式更加让用户易于接受。另外,LDAP允许你通过使用一种叫做objectClass的特殊属性来控制哪些属性是条目所必须的,哪些属性是条目可选的。objectClass属性的值是由条目所必须遵守的方案(schema)来定义的。

一个条目是通过它的标识名来引用的。而标识名(Relative DistinguishedName 或者RDN)是由标识名和它的父条目名连在一起构成的。

LDAP定义了一个查询和更新目录的 *** 作,支持的 *** 作包括从目录中添加和删除条目,更改已有的条目,更改已有的的名字。然而,大多数情况下LDAP是用于搜索目录中的信息的。通过指定搜索过滤器,LDAP可以在目录的相关部分搜索想相符的条目。满足过滤条件的每一个条目都能收到请求消息。

一些目录服务不提供保护,允许信息对任何人可见。LDAP提供了一套机制来对客户进行身份确认,或者让客户证明他拥有连接到服务器的身份,这无疑为对服务器进行全方位的访问控制铺平了道理,从而确保了服务器上所包含信息的安全。LDAP也支持privacy和integrity的安全服务。

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 域账号解锁

总结

from ldap3  import Server, Connection, ALL, MODIFY_ADD, MODIFY_REPLACE, MODIFY_DELETE

class Connect_ldap:

    def __init__(self):   #初始化

        selfserver ='10101010'   #ldap服务器地址

        selfuser ='cn=Directory Manager'   # Bind DN or user

        selfbase_dn ='dc=bizenit,dc=com'  #base_dn

        selfpwd ='XXXXXXX'    #密码

        selfport =5389   #端口

    def connect(self):    #连接ldap服务

        server = Server(host=selfserver, port=selfport, get_info=ALL)

        conn = Connection(server=server, user=selfuser, password=selfpwd, auto_bind=True)

        return conn

    def add_user(self):   #添加条目

        i =1

        j =17300000001

        conn =selfconnect()

        while i <220000:

            mail =str(j) +"@mailcom"

            print(connadd("uid=username%s,ou=Internal,ou=People,dc=bizenit,dc=com" % (i),

                          object_class=['top', 'inetOrgPerson', 'person', 'organizationalPerson',

                                        'smart-extends', 'customized-extends'],        #类型

                          attributes={'cn':"username%s" % (i), 'smart-type':"E1",

                                      'departmentNumber':"D1155073", 'mobile': j,

                                      'smart-status':1, 'mail': mail, 'telephoneNumber': j,

                                      'userPassword':"smart123"}))    #属性

            i +=1

            j +=1

    def delete_user(self):     #删除条目

        i =1

        conn =selfconnect()

        while i <220000:

            print(conndelete("uid=username%s,ou=Internal,ou=People,dc=bizenit,dc=com" % (i)))

            i +=1

    def modify_user(self):      #修改条目 

        i =793123

        j =17300793123

        conn =selfconnect()

        while i <1000000:

            connmodify("uid=username%s,ou=Internal,ou=People,dc=bizenit,dc=com" % (i),

                        {"objectClass": [(MODIFY_ADD, ['customized-extends', 'smart-extends'])]})

mail =str(j) +"@mailcom"

            a = connmodify("uid=sidl%s,ou=Internal,ou=People,dc=bizenit,dc=com" % (i),

                            {"departmentNumber": [(MODIFY_ADD, ['D1155073'])], "smart-type": [(MODIFY_ADD, ["E1"])],

                            "telephoneNumber": [(MODIFY_ADD, [j])], "userPassword": [(MODIFY_ADD, ["smart123"])],

                            "smart-status": [(MODIFY_ADD, [1])], "mail": [(MODIFY_ADD, [mail])]})

        print(a)

        print(i)

        i +=1

        j +=1

    def modify_dn_user(self):    #移动条目

        i =1

        j =17300000001

        conn =selfconnect()

        print(connmodify_dn("uid=username%s,ou=People,dc=bizenit,dc=com" % (i), 'uid=username%s' % (i),

                            new_superior="ou=Internal,ou=People,dc=bizenit,dc=com"))

        i +=1

        j +=1

if __name__ =="__main__":

a = Connect_ldap()

aadd_user()

公钥证书与证书机构
名词解释
1,数字认证:是指用数字办证确认,鉴定,认证网络上参与信息交流者或服务器的身份。
2,公钥证书:它将公开密钥与特定的人,器件或其他实体联系起来。公钥证书是由证书机构签署的,其中包含有持证者的确切身份。
3,公钥数字证书:网络上的证明文件,证明双钥体制中的公钥所有者就是证书上所记录的使用者。
4,单公钥证书:一个系统中所有的用户的互相认证。
5,多公钥证书:用于不有证书的用户的相互认证。
6,客户证书:证明客户身份和密钥所有权。
7,服务器证书:证实服务器的身份和公钥。
8,安全邮件证书:证实电子邮件用户的身份和公钥。
9,CA证书:证实CA身份和CA的签名密钥。
10,证书机构CA用于创建和发布证书,它通常为一个称为安全域的有限群体发放证书。
11,安全服务器:面向普通用户,用于提供证书的申请,浏览,证书吊销表以及证书下载等安全服务。
12,CA服务器:是整个证书机构的核心,负责证书的签发。
13,LDAP服务器:提供目录浏览服务,负责将注册机构服务器传输过来的用户信息以及数字证书加入到服务器上。
14,数据库服务:是认证机构的核心部分,用于认证机构数据,日志和统计信息的存储和管理。
15,公钥用户需要知道公钥的实体为公钥用户。
16,证书更新当证书持有者的证书过期,证书被窃取,受到攻击时通过更新证书的方法,使其用新的证书继续参与网上认证。证书的更新包括证书的更换和证书的延期两种情况。
简答题:
1,有效证书应满足的条件有哪些?
答:(1)证书没有超过有效期。(2)密钥没有被修改。如果密钥被修改后,原证书就应当收回,不再使用。如果雇员离开了其公司,对应的证书就可收回,如果不收回,且密钥没被修改,则可继续使用该证书;(3)证书不在CA发行的无效证书清单中。CA负责回收证书,并发行无效证书清单。用户一旦发现密钥泄露就应及时将证书吊销。并由CA通知停用并存档备案。
2,密钥对生成的两种途径是什么?
答:(1)密钥对持有者自己生成:用户自己用硬件或软件生成密钥对。如果该密钥对用于数字签名时,应支持不可否认性。(2)密钥对由通用系统生成:由用户依赖,可信赖的某一中心机构生成,然后安全地送到特定用户的设备中。利用这类中心的资源,可产生高质量密钥对,易于备份和管理。
3,证书有哪些类型?
答:(1)个人证书:证实客户身份和密钥所有权。在一些情况下,服务器会在建立SSL边接时要求用个人证书来证实客户身份。用户可以向一个CA申请,经审查后获得个人证书。
(2)服务器证书:证实服务器的身份和公钥。当客户请求建立SSL连接时,服务器把服务器证书传给客户。客户收到证书后,可以检查发行该证书的CA是否应该信任。对于不信任的CA,浏览器会提示用户接受或拒绝这个证书。
(3)邮件证书:证实电子邮件用户的身份和公钥。一些有安全功能的电了邮件应用程序能使用邮件证书来验证用户身份和加密解密信息。
(4)CA证书:证实CA身份和CA的签名密钥。在Netscape浏览器里,服务器管理员可以看到服务受接受的CA证书,并选择是否信任这些证书。CA证书允许CA发行其他类型的证书。
4,如何对密钥进行安全保护?
答:密钥按算法产生后,首先将私钥送给用户,如需备份,应保证安全性,将公钥送给CA,用以生成相应证书,
为了防止未授权用户对密钥的访问,应将密钥存入防窜扰硬件或卡中,或加密后存入计算机的文件中。
此处,定期更换密码对是保证安全的重要措施。
5,CA认证申请者的身份后,生成证书的步骤有哪些?
答:(1)CA检索所需的证书内容信息;(2)CA证实这些信息的正确性;(3)回CA用其签名密钥对证书签名;(4)将证书的一个拷贝送给注册者,需要时要求注册者回送证书的收据;(5)CA将证书送入证书数据库,向公用检索业务机构颂;(6)通常,CA将证书存档;(7)CA将证书生成过程中的一些细节记入审记记录中。
6,公钥证书的基本作用?
答:将公钥与个人的身份,个人信息件或其他实体的有关身份信息联系起来,在用公钥证实数字签名时,在确信签名之前,有时还需要有关签名人的其他信息,特别是要知道签名者是否已被授权为对某特定目的的签名人。
授权信息的分配也需用证书实现,可以通过发放证书宣布某人或实体具有特定权限或权威,使别人可以鉴别和承认。
7,双钥密码体制加密为什么可以保证数据的机密性?
答:双钥密码体制加密时有一对公钥和私钥,公钥可以公开,私钥由持有者保存,公钥加密过的数据中有持有者的私钥能解开,这样就保证了数据的机密性。经私钥加密过的数据——数字签名可被所具有公钥的人解开,由于私钥只有持有者一人保存,就样就证明信息发自私钥持有者,具有不可否认证和完整性。

应该叫做LDAP服务器吧。
LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP。LDAP是一个比关系数据库抽象层次更高的存贮概念,与关系数据库的查询语言SQL属同一级别。LDAP最基本的形式是一个连接数据库的标准方式。LDAP对查询进行了优化,与写性能相比LDAP的读性能要优秀很多。LDAP最大的优势是:可以在任何计算机平台上,用很容易获得的而且数目不断增加的LDAP的客户端程序访问LDAP目录。
LDAP服务器,可以说是安装了LDAP软件,并提供LDAP支持和服务的服务器。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10322263.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-07
下一篇 2023-05-07

发表评论

登录后才能评论

评论列表(0条)

保存