一 、概述
1.1 AD域服务
日常生活中使用的电话薄内记录着亲朋好友的姓名、电话与地址等数据,它就是 telephone directory(电话目录);计算机中的文件系统(file system)内记录着文件的文件名、大小与日期等数 据,它就是 file directory(文件目录)。 如果这些目录内的数据能够由系统加以整理,用户就能够容易且迅速地查找到所需的数据,而 directory service(目录服务)提供的服务,就是要达到此目的。在现实生活中,查号台也是一种目 录;在 Internet 上,百度和谷歌提供的搜索功能也是一种目录服务。 Active Directory 域内的 directory database(目录数据库)被用来存储用户账户、计算机账户、打印 机和共享文件夹等对象,而提供目录服务的组件就是 Active Directory (活动目录)域服务(Active Directory Domain Service,AD DS),它负责目录数据库的存储、添加、删除、修改与查询等操作。 一般适用于一个局域网内。 在 AD 域服务(AD DS)内,AD 就是一个命名空间(Namespace)。利用 AD,我们可以通过对象名 称来找到与这个对象有关的所有信息。 在 TCP/IP 网络环境内利用 Domain Name System(DNS)来解析主机名与 IP 地址的对应关系,也就 是利用 DNS 来解析来得到主机的 IP 地址。除此之外,AD 域服务也与 DNS 紧密结合在一起,它的域命 名空间也是采用 DNS 架构,因此域名采用 DNS 格式来命名,例如可以将 AD 域的域名命名为 。
1.2 LDAP简介
LDAP(Lightweight Directory Access Protocol),轻量目录访问协议,是一种用来查询与更新 Active Directory 的目录服务通信协议。AD 域服务利用 LDAP 命名路径(LDAP naming path)来表示对象在 AD 内的位置,以便用它来访问 AD 内的对象。
LDAP数据的组织方式(如下图所示), 在树根一般定义国家(c=CN)或域名(dc=com),在其下则往往
定义一个或多个组织 (Organization)(o=Acme)或组织单元(Organizational units)
(ou=People)。一个组织单元可能包含诸如所有雇员、大楼内的所有设备等信息。此外,LDAP支持对条目能
够和必须支持哪些属性进行控制,这是有一个特殊的称为对象类别(objectClass)的属性来实现的。该属性
的值决定了该条目必须遵循的一些规则,其规定了该条目能够及至少应该包含哪些属性。例如:
inetOrgPerson对象类需要支持sn(surname)和cn(common name)属性,但也可以包含可选的如邮件,
电话号码等属性。
1.3 LDAP常见的简称
简介 | 全称 | 用途 |
---|---|---|
o | Organization | 组织/公司 |
ou | Organization Unit | 组织单元 |
c | Country | 国家 |
dc | Domain Component | 域名 |
sn | Suer Name | 真实名称 |
cn | Common Name | 常用名称 |
dn | Distiguished Name | 唯一标识名 |
uid | User ID | 用户标识 |
1.4 AD域与LDAP的区别
Windows AD(Active Directory)域应该是LDAP的一个应用实例,而不应该是LDAP本身。Windows AD 域的用户、权限管理应该是微软公司使用LDAP存储了一些数据来解决域控这个具体问题,AD域提供了 相关的用户接口,我们可以把AD域当做微软定制的LDAP服务器。Active Directory先实现一个LDAP服 务器,然后自己先用这个LDAP服务器实现了自己的一个具体应用。
二 、目的
2.1统一管理多个办公系统
2.2多个办公系统统一账户密码
2.3解决维护多套办公系统复杂麻烦的问题
三、实现代码
内容编辑完成之后,需要使用命令配置重置
重启服务
测试获取AD域用户列表:
四:问题处理
问题: 其他集成的系统使用AD账号都无认证错误的问题,只有Gitlab认证时,提示报错:Invalid credentials 注:
1、检查了一下这个配置文件和里边用的AD信息都正常,没有什么问题,为什么登录时,就是会报错呢,无意之间测试了一个英文账户(cn和SamaccountName)都是英文字母的,发现他能认证成功,这时候我就觉得这个集成没有问题,应该是哪里的么有配置正确。 通过在AD中查看一个中文账户和英文账户的却别,发现两者区别在于cn这个属性上,英文账户的cn属性和SamaccountName属性是一模一样的,但是中文的两个不一样,中文的cn是中文显示名,SamaccountName是登录账号。 于是用了一个中文名字去认证登录,发现通过了,能够正常通过。再返回去查看gitlab.rb配置文件,这时注意到 “uid: ‘cn’”这个配置,此命令式说调用AD中CN属性值作为Gitlab登录账户,当AD中都是英文账户时,这个命令是没有问题的,但是当存在中文账户时,需要改为uid:‘SamAccountName’,这样账户就改为了AD一样的登录账号。
2、还有一个就是bind_dn: 'cn=administrator,cn=users,dc=xxx,dc=com'这个属性没有加cn=users这个组织单位,导致报错
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://www.hqyman.cn/post/11803.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~