AD域实现统一用户管理 |
您所在的位置:网站首页 › 域里面添加用户 › AD域实现统一用户管理 |
AD域服务
什么是目录(directory)呢? 日常生活中使用的电话薄内记录着亲朋好友的姓名、电话与地址等数据,它就是 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 域的域名命名为 moonxy.com。 LDAP简介 LDAP(Lightweight Directory Access Protocol),轻量目录访问协议,是一种用来查询与更新 Active Directory 的目录服务通信协议。AD 域服务利用 LDAP 命名路径(LDAP naming path)来表示对象在 AD 内的位置,以便用它来访问 AD 内的对象。
1.2 LDAP常见简称 简介 全称 用途 o Organization 组织/公司 ou Organization Unit 组织单元 c Country 国家 dc Domain Component 域名 sn Suer Name 真实名称 cn Common Name 常用名称 dn Distiguished Name 唯一标识名 uid User ID 用户标识 1.3 AD域与LDAP的区别 Windows AD(Active Directory)域应该是LDAP的一个应用实例,而不应该是LDAP本身。Windows AD域的用户、权限管理应该是微软公司使用LDAP存储了一些数据来解决域控这个具体问题,AD域提供了相关的用户接口,我们可以把AD域当做微软定制的LDAP服务器。Active Directory先实现一个LDAP服务器,然后自己先用这个LDAP服务器实现了自己的一个具体应用。 2创建AD域服务,导入证书创建AD域服务这里不在多说,网上有很多详细教程。详细介绍一下AD域服务证书问题。 情况1:不涉及密码,状态操作。不需要证书 可以使用默认389端口 使用springboot 集成LDAP配置 就可以完成基本操作 情况 2:功能要求密码,状态操作 这种情况下需要使用AD域的636端口,SSL协议访问,并导入服务器的AD域服务证书 。 网上有很多教程说本地使用ie浏览器访问服务器IP,下载证书,亲测没什么用还增加难度。可以使用最简单的方式 服务器导出证书后直接复制到本地。 证书导入: 默认密码 changeit 开始 >> 运行 >> 输入cmd 进入dos命令行 >>cd 到jdk1.5\jre\lib\security这个目录下,敲以下命令(使用此命令可以省略指定路径): keytool -import -alias cacerts -keystore cacerts -file d:\software\AKAZAM-Mail.cer 红底 : 为证书导入起的别名,可以随便起 绿底 : 为从服务器导出的证书路径(命令错误就给路径加上双引号 “”) 如果在连接的代码中报错误 javax.naming.CommunicationException: 192.168.0.10:636 [Root exception is javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative names matching IP address 192.168.0.10 found] 换JDK 1.8-161 或 尝试属于下列导入证书方式(该步骤需写路径): 1. 然后“开始-运行->cmd”进入控制台, 2. 用CD命令切换到jdk的bin目录下, 3. 输入命令:“keytool -import -keystore 证书名.keystore -file cer文件的路径”, 4. 从而导入一个新的证书,进入jdk的bin目录能够看到你新命名的那个扩展名为keystore的文件, 5. 然后将更改密码的时候设置的证书路径更改为刚刚生成的这个证书的文件路径。(代码中体现) 3连接AD域服务使用Softera LDAP Browser连接服务 方便查看AD域用户信息 创建连接
输入连接名(随便输入) 输入IP地址 点击FetchBaseDNs选择域名(默认389端口) 输入用户名+@域名 这里Principal 一定记得输入 用户名+@完整域名 连接完成 从图一中可以查看AD域的组织和用户数据,图一红框中就是组织单元。但是AD域中也有组的概念,切记第一点,用户需要创建到组织单元中,然后可以根据用户角色分配到组里。 第二点,图二是用户nie 的ObjectClass属性值。图三是组织单元的ObjectClass属性值 包括其他的 组,联系人,计算机。。。都有对应的ObjectClass值。在创建,查找,删除,修改用户,组织单元等 都需要指定objectClass(在下面代码中详细介绍) 4. 集成LDAP配置 在pom.xml中添加Maven依赖 org.springframework.boot spring-boot-starter-data-ldap org.springframework.boot spring-boot-starter-data-jpa 项目依赖包spring-boot-starter-data-ldap是Spring Boot封装的对LDAP自动化配置的实现,它是基于spring-data-ldap来对LDAP服务端进行具体操作的 5 编写代码
5.1 打开链接
(198)在上述导入证书步骤中,如使用第一种可省略此步代码,使用第二种方式必须指定 .keystore文件的路径, (200)在创建用户时需要设置密码和用户状态,所以需要指定SSL协议 此步骤如果用户验证失败,直接抛出异常 err code 49 可以先尝试把用户名加 @域名,如果还是err code 49 那就是你账号密码有问题
5.2关闭连接 直接调用dc.close()方法即可
这里创建账户调用使用 public DirContext createSubcontext(String name, Attributes attrs) 参数name 为创建用户的完整distinguishedName CN= , OU= ,DC= ,DC= 形式 Attrs 则为用户属性(见下图)
这里有个异常 Remain name 。。。的错,此错误为 distinguishedName 属性值错误 方法通过及添加完成
上图红框 :设置添加的属性。 此处4个属性值 对应用户。 也可更改为组,计算机等 可以在步骤三 最后图二中查看属性值。
上图绿框 :(170)设置用户常用名CN 基本属性之一 (171)用户状态:66048[普通帐户,无密码到期] 546 用户禁用 (还有很多其他状态自行百度) (174)编码格式不可改其他的,“\” 密码 “\” \不可省略 (170 - 175) 这里的attrs 可以添加更多的数据,例如姓,电话,公司,职位等等,只需要put方法第一个参数设置成对应的属性,可在3连接AD域服务 软件上查看 这里有一点 cn 要和 distinguishedName 中的CN= 一致
在学习操作AD域中 , 难点就在于导入服务器证书,以ssl协议连接,并创建用户设置密码,设置状态。至于其他的操作,直接调用 LdapContext 的方法及可实现难度不大。 6 参考文章 Windows Server 2008 R2 活动目录服务安装 链接 安装AD域服务证书 win server 2008 链接 证书导入参考 本文档步骤2 安装AD域服务证书 win server 2012 链接 证书导入参考 本文档步骤2 Spring LDAP Reference 官方文档 链接 博客 链接 操作AD域 err code 总计
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |