一、项目中,更新人员信息时会报异常
下面为提示:LDAP: error code 17 - virtualaccount: attribute type undefined
分析:1) 人员信息是存储在ldap中,应该是ldap中的人员没有这个属性
2)在ldap\etc\schema下找到人员信息的定义
# GalaxyPeople
objectclass ( 2.16.840.1.153730.3.2.22
NAME 'GalaxyPeople'
DESC 'GalaxyPeople use to manage people'
SUP InetOrgPerson
STRUCTURAL
MAY (
otherDepartmentNumber $ sortid $ ifactivated $ peopleLevel $ leadermember $ leaderFilter $ title $ post $ globalsortid $ virtualaccount
)
)
MAY,即可选属性定义中确实没有virtualaccount属性
3)得出解决方式:增一个virtualaccount属性定义,在GalaxyPeople中添加。
二、基础知识
1、什么是LDAP的Schema?
在ldap中, shema用来定义你的ldap中可以有那些objectClass,这些objectClass又可以有那些Attribute,以及控制什么样的数据被存到哪里。
用数据库的概念来理解:任何的数据库都有一个Schema,Schema是一个数据模型,它被用来决定数据怎样被存储,被跟踪的数据的是什么类型,存储在不同的Entry下的数据之间的关系。Attribute相当于字段(Field),而Object Calss相当于表。
当你搭建好你的LDAP后,一些已经定义好的Entry的信息存储在一系列的Attribute中的值中。你也可以创建一个要存储在LDAP中的新的值类型。
所有的Attribute可能被放到一起用来组成一个叫做Object Class的类型。为了满足你的需要,你可以定义自己的Object Class,每一个Object Class中的属性都可以设计成reqired(必选的)或optional(可选的)。
你可以设计你的LDAP信息树(DIT),在同一个Entry存储许多相似的Object Class。
2、理解LDAP的Attribute
简单的说,Attribute是可以存放一个单一类型信息的容器。(采用Key/Value进行对应)。
定制Schema可以使你设计很多你需要的Attribute,如你喜欢的食物、生日、工作日期等等,但你也不得不为你的目录服务器的配置文件(Schema)添加正确的Attribute。
一个Attribute包括以下几个部分,我们稍后会详细介绍。
n Attribute名字
n 描述
n Attribute的对象标识符(OID)
n 用于进行类型检查和模式匹配的语法
n Attribute是否允许有多个值
(1)什么是Attribute的名字?
这在概念上已经很清晰了,但在你自己创建一个新属性类型之前,你应该检查一下LDAP规范中是否已经存在能够满足你的要求的Attribute。你可以从下面这个站点查找已经定义好的object class的Attribute列表:http://www.ldapman.org/schema-references。
假设你需要的Attribute不存在,那么你要自己添加。首先你应该为自己将要添加的属性定义一个新的名字,需要注意的是你的Attribute的名字要避免与很可能成为“官方指定”的Attribute的名字冲突。
你可以用你的单位、公司甚至停车场的ID来作为你的Attribute的名字。当定义Schema时,Gizmo公司的LDAP的系统管理员很可能定义这样的名字作为Attribute名:"gizmoParkingPassNumber”。我们可以看到这个Attribute名字可以很好避免同日后的官方指定的Attribute名字冲突。
请注意“gizmoParkingPassNumber”作为Attribute看起来很优美,你应该养成这样的习惯:Attribute的名字的第一个字母必须小写,其他单词的第一个字母必须大写,其他的字母必须小写,并且你的Attribute名字应该足够长,这样可以根据你的Attribute的名字就可以知道它所存储的数据的意义。
Attribute的名字由a-z,0-9以及其他少量的字母构成,名字的第一个字符必须是字母,空格、下划线及一些特殊字符是不允许出现在Attribute的名字中的。
(2)描述: 是一个描述Attribute的用途的注释。
(3)对象标识符(Object Identifiers)
对象标识符(OID)是被LDAP内部数据库引用的数字。Attribute的名字是让你和我看的,但计算机不喜欢,因为计算机处理数字是最有效率的。如果你对DNS的概念很熟悉的话,那么你应该很容易理解这点。比如:www.sendmail.net 这个域名被计算机接收后会翻译成一个IP地址。
(4)语法(syntax):创建Attribute时要遵从的一些规则,例如只能为数字,只能是电话号码等。语法也可以自己定义。
三、了解了基本知识点就可修改。
新建一个virtualaccount属性,如下
# ifactivated
attributetype ( 2.16.840.1.153730.3.2.14
NAME virtualaccount
DESC 'is or not virtualaccount'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
给people属性添加此属性
# GalaxyPeople
objectclass ( 2.16.840.1.153730.3.2.22
NAME 'GalaxyPeople'
DESC 'GalaxyPeople use to manage people'
SUP InetOrgPerson
STRUCTURAL
MAY (
otherDepartmentNumber $ sortid $ ifactivated $ peopleLevel $ leadermember $ leaderFilter $ title $ post $ globalsortid $ virtualaccount
)
)
结果:添加完之后,ldap启动不了,不知道为什么??
后来,找到一个别的版本的ldap,将新建virtualaccount属性改为下面的代码
#virtualaccount
attributetype ( 2.16.840.1.153730.3.2.20
NAME 'virtualaccount'
DESC 'whether is virtual account or not'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE)
ldap 启动正常,问题解决
目前想不通的地方,为什么我的定义是错误的??错在什么地方?ID??属性的ID只要不唯一就可以么??
分享到:
相关推荐
**LDAP简介** LDAP,全称为轻量级目录访问协议(Lightweight Directory Access Protocol),是一种用于访问和管理分布式目录服务的标准网络协议。它主要用于存储和检索用户、组织、资源等信息,广泛应用于身份验证...
**LDAP浏览器:深入理解与应用** LDAP(轻量级目录访问协议)是一种用于查询和管理分布式目录服务的网络协议,广泛应用于企业环境中的用户身份验证、权限管理和数据共享。LdapBrowser是一款专为开放源代码的...
**LDAP(轻量级目录访问协议)是一种网络协议,用于访问和管理分布式目录服务。它在各种操作系统上广泛使用,包括Windows。本文将详细介绍在Windows环境下安装LDAP服务器以及使用 LDAP 客户端工具 LdapAdmin 的步骤...
**LDAP简介** LDAP(Lightweight Directory Access Protocol)是一种轻量级目录访问协议,常用于存储和检索用户账户、联系人信息、配置数据等结构化信息。它基于X.500标准,但设计得更为简单且适合互联网环境。LDAP...
**LDAP(轻量级目录访问协议)是一种用于访问和管理分布式目录服务的协议,广泛应用于组织内部的身份验证、用户及资源管理。LdapAdmin是一款专为Windows操作系统设计的高效、稳定的LDAP管理工具,它允许管理员便捷地...
**LDAPadmin:Windows环境下的LDAP管理工具** 在IT领域,LDAP(Lightweight Directory Access Protocol)是一种广泛用于存储和检索用户信息、配置数据等目录服务的数据访问协议。它为分布式网络提供了一个标准的...
标题中的"LdapBrowser282.rar_LdapBrows_LdapBrowser.282_ldap_ldapBrowser_op"指的是LdapBrowser的282版本的压缩文件,它包含了该软件的相关组件和可能的操作指南。LdapBrowser是一款专用于管理和查看OpenLDAP...
**LDAP浏览器LdapBrowser282详解** LDAP(Lightweight Directory Access Protocol)是一种用于访问目录服务的协议,常用于组织和管理用户、组、资源等信息。LdapBrowser282是一款专门针对LDAP目录服务的浏览和管理...
在实现 svn+ldap+sasl 认证时,需要安装 ldap 服务器和配置 ldap 服务,然后在 svn 服务器中配置 sasl 认证协议,使用 ldap 服务器进行用户认证。下面是实现 svn+ldap+sasl 认证的步骤: 1. 安装 ldap 服务器 首先...
【LDAP与DELPHI在开发电话簿应用中的整合】 LDAP(Lightweight Directory Access Protocol)是一种轻量级目录访问协议,常用于存储和检索用户、组织等结构化数据。它允许客户端通过TCP/IP协议来访问分布式目录服务...
资源没有对LDAP创建的内容。 资源主要有: rar包:一个Web工程, 主要有,利用Spring-ldap对LDAP的基本操作(查询,增删改);Extjs实现的对Ldap的树状结构的显示,结构有点类似Softerra LDAP;一个测试类。 pdf:...
**LDAP浏览器:强大的目录服务管理工具** 在信息技术领域,LDAP(Lightweight Directory Access Protocol)是一种用于访问和管理分布式目录服务的协议。它被广泛应用于组织内部的用户认证、权限管理和数据存储。`...
禅道开源版11.5 LDAP插件是一个用于禅道项目管理软件的扩展工具,它主要功能是集成轻量级目录访问协议(LDAP)进行用户身份验证。此插件允许禅道系统与LDAP服务器通信,使得用户可以通过已有的LDAP账户登录禅道,...
在Spring Boot项目中,我们可以使用`spring-boot-starter-ldap`和`spring-boot-starter-data-ldap`这两个starter来引入LDAP支持。在`pom.xml`或`build.gradle`文件中添加如下依赖: ```xml <groupId>org.spring...
`LDAP`(轻量级目录访问协议)则是一种用于访问和管理分布式目录服务的标准协议,常用于存储和检索用户、组织和其他资源的信息。本篇文章将深入探讨如何使用Delphi来连接并操作LDAP服务器。 首先,我们需要了解...
JAVA中使用LDAP进行用户认证 JAVA中使用LDAP进行用户认证是指在JAVA应用程序中使用轻量级目录访问协议(LDAP)来进行用户身份验证。LDAP是一种基于X.500标准的目录访问协议,但它更简单、更灵活,可以根据需要进行...
**LDAP(Lightweight Directory Access Protocol)连接工具是用于管理和访问 LDAP 目录服务的重要软件,它使得用户可以方便地查询、编辑和管理存储在 LDAP 服务器中的数据。ApacheDirectoryStudio 是一个开源、跨...
Confluence 安装和 LDAP 集成 Confluence 是一个基于 Java 的 wiki 软件,广泛应用于企业知识管理、文档管理和协作平台。下面将详细讲解 Confluence 的安装过程和与 LDAP 的集成过程。 Confluence 安装过程 1. ...
**LDAP编辑器:连接与编辑LDAP数据** LDAP(Lightweight Directory Access Protocol)是一种轻量级目录访问协议,常用于组织和管理分布式身份信息。它提供了一种标准的方式来存储和检索用户、组、服务等对象的数据...
### 泛微协同管理ecology系统与LDAP集成手册 #### 第一部分:LDAP概述 ##### LDAP目录的优势 在探讨LDAP(轻量级目录访问协议)及其与泛微ecology系统的集成之前,我们首先来了解一下LDAP的一些核心优势。这些...