首页 > 编程语言 >java LDAP 学习

java LDAP 学习

时间:2024-09-05 22:16:46浏览次数:9  
标签:java objectclass 条目 学习 openldap LDAP LDIF user01

java LDAP 学习

基础概念

目录系统是关于某些类别的对象(例如人)的信息列表。目录可以用于查找特定对象的信息,也可以反方向查找满足特定需求的对象。 企业中的员工通讯录就是一个目录系统。目录访问协议(directory access protocol)就是用来访问目录中数据的标准化方式。最广泛使用的是 轻量级目录访问协议(lightweight directory access protocol,LDAP),openldap是LDAP的一个开源实现。

Java对象在LDAP目录中也有多种存储形式:

  • Java序列化
  • JNDI Reference
  • Marshalled对象
  • Remote Location

LDAP数据模型

在LDAP目录中存储的是类似于面向对象语言中对象的条目(entry)。每个条目必须有一个能标示自己的可区别名称 DN(distinguished name),DN 又由一组相对可区别名称 RDN(relative DN)组成。

例如:

cn=user01,ou=People,dc=massclouds,dc=com  

这个DN唯一标示的条目代表了目录中的一个人。 其中各个RDN的含义是:
cn: common name(s) for which the entity is known by
ou: organizational unit this object belongs to
dc: domain component

系。 而条目中的属性就是定义在这些类中的。关于objectclass 、属性的规则是定义在schema中的。

下面是定义一个条目的LDIF(LDAP Data Interchange Format, LDAP数据交换格式):

dn: cn=user01,ou=People,dc=massclouds,dc=com
cn: user01
gidnumber: 500
homedirectory: /home/user01
loginshell: /bin/bash
objectclass: inetOrgPerson
objectclass: posixAccount
objectclass: top
sn: user01
title:  
uid: user01
uidnumber: 836031732
userpassword: {SSHA}25vgYD/sRglAUSKLKfIU7hya9Kp/cFUS

上面的例子中,表示user01的条目属于三个objectclass: inetOrgPerson 、posixAccount和top。 objectclass分为 结构型、辅助型和抽象型,每个条目必须要属于一个结构型的objectclass。

在objectclass中定义了必须的属性和可选的属性,条目如果属于某个objectclass,那么就必须要有这个objectclass所有的必须属性。

条目按照它们的DN组织成一颗目录信息数(Directory Intermation Tree, DIT),树的叶子节点通常表示特定的对象,而内部节点表示组织、部门等上层信息。一个节点必然会包含它父节点的所有RDN。

LDIF文件书写规则

LDIF 是存储LDAP配置信息及目录内容的标准文本文件格式,通常用来交换数据并在OpenLDAP服务器之间互相交换数据,并且可以通过LDIF实现数据文件的导入、导出以及数据文件的添加、修改、重命名等操作,这些信息需要按照LDAP中schema的规范进行操作,并会接受schema的检查,如果不符合OpenLDAP schema规范要求,则会提示相关语法错误。

  • LDIF文件每行的结尾不允许有空格或者制表符;
  • LDIF文件允许相关属性可以重复赋值并使用;
  • LDIF文件以.ldif结尾命名;
  • LDIF文件中以#号开头的一行为注释,可以作为解释使用;
  • LDIF文件所有的赋值方式为:属性:(空格)属性值;
  • LDIF文件通过空行来定义一个条目,空格前为一个条目,空格后为另一个条目的开始。

搭建OpenLDAP环境

执行下面命令安装OpenLDAP的相关(环境 centos7)

yum -y install openldap openldap-servers openldap-clients openldap-devel compat-openldap

安装完后,可以看到自动创建了ldap用户:

通过下面命令可以查看安装了哪些包

rpm -qa |grep openldap

拷贝数据库配置配置文件,并启动服务

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap. /var/lib/ldap/DB_CONFIG
systemctl start slapd
systemctl status slapd
systemctl enable slapd #设置开机自启动

配置 LDAP

初始化配置

直接照着教程装就行

参考:https://zhuanlan.zhihu.com/p/32732045

参考:https://blog.csdn.net/Copy09/article/details/126892200

测试配置文件

该步骤是为了检查配置文件是否存在错误:

slaptest -u

config file testing succeeded 则说明配置文件无误;
checksum error on 异常是因为手动修改了文件,ldap检查和之前不一致;

配置好后登录 web 管理页面,效果如下:

标签:java,objectclass,条目,学习,openldap,LDAP,LDIF,user01
From: https://www.cnblogs.com/gaorenyusi/p/18399305

相关文章

  • 基于Java的考试报名管理系统的设计与实现(源码+LW+调试文档)
     目录:程序功能截图:程序部分代码参考:数据库sql:程序技术介绍:后端springboot介绍:mysql介绍:程序论文:​选择我的理由:程序获取:......
  • 【学习笔记】SSL证书安全机制之证书验证
    前言:每当Client从Server收到一张证书,有2件事Client需要去验证:证书是否有效?证书只是文件中的文本Client如何知道内容能够信任?Server是否是证书真正的拥有者?证书可以公开获取Client如何知道Server是真正的拥有者?1、证书是否有效?CertificateAuthority(须知道CA是证书......
  • Java毕业设计基于SpringBoot的城市公交运营管理系统(源码+文档+调试+讲解)
    文末获取资源,收藏关注不迷路文章目录前言主要使用技术研究内容核心代码文章目录前言本论文主要完成不同用户的权限划分,不同用户具有不同权限的操作功能,在公交员模块,主要有公交员进行注册和登录,公交员可以查看公交调度、紧急上报、紧急调度、车辆状况等,还能修改......
  • 基于Java的图书借阅系统的设计与实现(源码+LW+调试文档)
     目录:程序功能截图:程序部分代码参考:数据库sql:程序技术介绍:后端springboot介绍:mysql介绍:程序论文:​选择我的理由:程序获取:......
  • Java毕业设计基于SpringBoot的图书管理系统(源码+文档+调试+讲解)
    文末获取资源,收藏关注不迷路文章目录前言主要使用技术研究内容核心代码文章目录前言该系统利用Java语言、MySQL数据库,结合目前流行的B/S架构,将图书管理的各个方面都集中到数据库中,以便于用户的需要。该系统在确保系统稳定的前提下,能够实现多功能模块的设计和应......
  • 基于Java的美容院管理系统的设计与实现(源码+LW+调试文档)
     目录:程序功能截图:程序部分代码参考:数据库sql:程序技术介绍:后端springboot介绍:mysql介绍:程序论文:​选择我的理由:程序获取:......
  • Java毕业设计基于SpringBoot的多媒体信息共享平台(源码+文档+调试+讲解)
    文末获取资源,收藏关注不迷路文章目录前言主要使用技术研究内容核心代码文章目录前言随着信息时代的来临,过去的武理多媒体信息共享管理方式缺点逐渐暴露,对过去的武理多媒体信息共享管理方式的缺点进行分析,采取计算机方式构建武理多媒体信息共享系统。本文通过阅读......
  • Java毕业设计基于SpringBoot的宠物服务中心小程序(源码+文档+调试+讲解)
    文末获取资源,收藏关注不迷路文章目录前言主要使用技术研究内容核心代码文章目录前言疫情爆发以来,越来越多的用户借助于移动手机、电脑完成生活中的事务,许多的传统行业也更加重视与互联网的结合。本论文探讨利用不断发展和进步的网络技术,实现对个人信息修改、用户......
  • Java毕业设计基于SpringBoot的宠物医院微信小程序(源码+文档+调试+讲解)
    文末获取资源,收藏关注不迷路文章目录前言主要使用技术研究内容核心代码文章目录前言本次将以宠物医院管理方面为切入点,论述了宠物医院管理的意义和内容,以此展开对宠物医院的开发与建设的详细分析。从数据挖掘的角度出发,了解信息管理系统的作用,对宠物医院的过程......
  • 学习算法需要数学知识吗?
    目录算法与数学:看似不可分割的关系常见算法中的数学元素案例分析:不需要高深数学知识的算法1.二分查找2.深度优先搜索(DFS)3.动态规划:斐波那契数列如何在有限的数学背景下学习算法1.专注于算法的逻辑和过程2.可视化算法流程3.从简单的实现开始,逐步优化4.学......