`

LDAP中如何自定义属性

 
阅读更多

本文档适用于 DSEE6.3+linux

需要新建两个文件 eperson-attributeTypes.ldif eperson-objectclasses.ldif ,其中 attributeTypes objectClasses 的内容是示例,需要自己按照实际情况进行 修改。其中 attributeTypes只涉及到 1.3.6.1.4.1.1466.115.121.1.15 - Directory String syntax 这种类型,其它类型暂未考虑。

 

 

[root@zjuam schema]#  cd /ldap/instance/389_636/config/schema

[root@zjuam schema]#  pwd

/ldap/instance/389_636/config/schema

 

[root@zjuam schema]#  vi eperson-attributeTypes.ldif

dn: cn=schema

changetype: modify

add: attributeTypes

attributeTypes: (yhm-oid NAME ('yhm' ) DESC 'yhm' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE)

attributeTypes: (gender-oid NAME ('gender' ) DESC 'gender' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE) 

attributeTypes: (cardnumber-oid NAME ('cardnumber') DESC 'cardnumber' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE)

 

[root@zjuam schema]#  vi  eperson-objectclasses.ldif  

dn: cn=schema

changetype: modify

add: objectclasses

objectClasses:(eperson-oid NAME 'eperson' DESC 'eperson' SUP top MUST (yhm) MAY (gender $ cardnumber) X-ORIGIN 'user defined')

 

 

[root@zjuam schema]#  ls -al eperson-*.ldif

-rw-r--r--  1 root root 386  8月  28 13:37 eperson-attributeTypes.ldif

-rw-r--r--  1 root root 179  8月  28 13:38 eperson-objectclasses.ldif

 

[root@zjuam schema]#  more 99user.ldif

#

# Copyright 2003 Sun Microsystems, Inc. All Rights Reserved

# Patents Pending.Use is subject to license terms.

#

# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to

# license terms. Copyright (c) 2001 Sun Microsystems, Inc.

# Some preexisting portions Copyright (c) 2001 Netscape Communications Corp.

# All rights reserved.

#

# User-defined schema

#

dn: cn=schema

 

[root@zjuam schema]#  cp 99user.ldif 99user.ldif.bak1

 

[root@zjuam schema]#  /ldap/install/dsrk6/bin/ldapmodify -D cn=admin,cn=Administrators,cn=config -w - -f /ldap/instance/389_636/config/schema/eperson-attributeTypes.ldif

Enter bind password: 

modifying entry cn=schema

 

[root@zjuam schema]#  /ldap/install/dsrk6/bin/ldapsearch -T -b cn=schema "(objectclass=*)" attributeTypes | grep "user defined"

attributeTypes: ( yhm-oid NAME 'yhm' DESC 'yhm' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'user defined' )

attributeTypes: ( gender-oid NAME 'gender' DESC 'gender' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'user defined' )

attributeTypes: ( cardnumber-oid NAME 'cardnumber' DESC 'cardnumber' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'user defined' )

 

[root@zjuam schema]#  more 99user.ldif

dn: cn=schema

objectClass: top

objectClass: ldapSubentry

objectClass: subschema

cn: schema

aci: (target="ldap:///cn=schema")(targetattr !="aci")(version 3.0;acl "anonymo

 us, no acis"; allow (read, search, compare) userdn = "ldap:///anyone";)

modifiersName: cn=admin,cn=administrators,cn=config

modifyTimestamp: 20120828054430Z

attributeTypes: ( yhm-oid NAME 'yhm' DESC 'yhm' SYNTAX 1.3.6.1.4.1.1466.115.12

 1.1.15 X-ORIGIN 'user defined' )

attributeTypes: ( gender-oid NAME 'gender' DESC 'gender' SYNTAX 1.3.6.1.4.1.14

 66.115.121.1.15 X-ORIGIN 'user defined' )

attributeTypes: ( cardnumber-oid NAME 'cardnumber' DESC 'cardnumber' SYNTAX 1.

 3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'user defined' )

nsSchemaCSN: 503c5abe000000000000

 

[root@zjuam schema]#  /ldap/install/dsrk6/bin/ldapmodify -D cn=admin,cn=Administrators,cn=config -w - -f /ldap/instance/389_636/config/schema/eperson-objectclasses.ldif 

Enter bind password: 

modifying entry cn=schema

[root@zjuam schema]#  more 99user.ldif

dn: cn=schema

objectClass: top

objectClass: ldapSubentry

objectClass: subschema

cn: schema

aci: (target="ldap:///cn=schema")(targetattr !="aci")(version 3.0;acl "anonymo

 us, no acis"; allow (read, search, compare) userdn = "ldap:///anyone";)

modifiersName: cn=admin,cn=administrators,cn=config

modifyTimestamp: 20120828054536Z

attributeTypes: ( yhm-oid NAME 'yhm' DESC 'yhm' SYNTAX 1.3.6.1.4.1.1466.115.12

 1.1.15 X-ORIGIN 'user defined' )

attributeTypes: ( gender-oid NAME 'gender' DESC 'gender' SYNTAX 1.3.6.1.4.1.14

 66.115.121.1.15 X-ORIGIN 'user defined' )

attributeTypes: ( cardnumber-oid NAME 'cardnumber' DESC 'cardnumber' SYNTAX 1.

 3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'user defined' )

objectClasses: ( eperson-oid NAME 'eperson' DESC 'eperson' SUP top STRUCTURAL 

 MUST yhm MAY ( gender $ cardnumber ) X-ORIGIN 'user defined' )

nsSchemaCSN: 503c5b00000000000000

 

 

以上配置完成之后,便可以新建用户了。

Java增加用户的代码如下:

import java.util.Hashtable;

import javax.naming.Context;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.BasicAttribute;
import javax.naming.directory.BasicAttributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;

public class LDAP {

	public static void main(String[] args) {
		Hashtable coninfo = new Hashtable();
		coninfo.put(Context.INITIAL_CONTEXT_FACTORY,
				"com.sun.jndi.ldap.LdapCtxFactory");
		coninfo.put(Context.REFERRAL, "follow");
		coninfo.put(Context.PROVIDER_URL,
				"ldap://10.22.23.74/dc=zju,dc=edu,dc=cn");
		coninfo.put(Context.SECURITY_PROTOCOL, "plain");
		coninfo.put("java.naming.ldap.version", "3");
		coninfo.put(Context.SECURITY_AUTHENTICATION, "simple");
		coninfo.put(Context.SECURITY_PRINCIPAL, "cn=directory manager");
		coninfo.put(Context.SECURITY_CREDENTIALS, "admin123");
		coninfo.put("com.sun.jndi.ldap.connect.pool", "true");
		DirContext ctx = null;
		try {
			ctx = new InitialDirContext(coninfo);

			BasicAttributes attrs = new BasicAttributes();
			attrs.put(new BasicAttribute("yhm", "001"));
			attrs.put(new BasicAttribute("gender", "f"));
			attrs.put(new BasicAttribute("cardnumber ", "888888"));

			Attribute atr = new BasicAttribute("objectClass", "top");
			atr.add("ePerson");

			attrs.put(atr);

			ctx.createSubcontext("yhm=001", attrs);
		} catch (NamingException e) {
			e.printStackTrace();
		}

	}

}
 
分享到:
评论

相关推荐

    ldapadmin,windows下管理ldap的工具

    2. **搜索与过滤**:该工具提供了强大的搜索功能,允许用户根据不同的属性和条件查找目录中的特定对象。此外,它还支持构建复杂的过滤器,以便精确匹配所需的信息。 3. **批量操作**:对于需要对大量对象执行相同...

    ldap6配置文档

    3. **灵活的扩展性**:LDAP支持自定义属性和对象类,使得它可以适应各种不同的业务需求。 4. **安全性**:LDAP支持多种安全措施,如TLS/SSL加密通信、访问控制列表(ACLs)等,确保数据的安全性。 ### 配置LDAP...

    Spring Security ldap 1.3.2

    在Spring Security 1.3.2版本中,这个模块为开发者提供了与LDAP服务器集成的强大工具,帮助管理用户身份信息和权限控制。 **1. Spring Security LDAP基础** Spring Security LDAP提供了一套API,用于连接和操作LDAP...

    spring boot集成ldap

    最后,记得在你的Spring Boot应用启动类中启用LDAP自动配置,并根据需要实现自定义逻辑,如认证、授权等。这样,你就成功地在Spring Boot项目中集成了LDAP服务,实现了基于LDAP的身份管理和数据操作。 总之,Spring...

    LDAP简介.pdf

    3. **灵活的属性定义**:LDAP允许自定义属性,使得它可以适应各种不同类型的目录服务需求,无论是用户账户管理还是设备配置信息存储。 4. **安全认证**:LDAP支持多种认证机制,包括SSL/TLS加密通信,确保数据传输...

    MediaWiki LDAP

    5. **自定义属性映射**: 用户可以根据组织的需要定制LDAP属性到MediaWiki用户字段的映射。 **二、配置选项** 在`Extension LDAP Authentication Configuration Options - MediaWiki.htm`文件中,会详细列出可供...

    ldap 详解(linux 下的ldap配置精华文档)

    在 LDAP 中,objectClass 的定义可以来自多个来源,包括标准的 LDAP_schema、 vendor-specific schema 和自定义的 schema。每个 objectClass 都有其对应的属性和语义,这些属性可以是必须的、可选的或是禁止的。 ...

    LDAP rfc文档 中英文对照

    6. **扩展与同步**:LDAP协议允许添加自定义操作和扩展,以适应不断变化的需求。同时,提供了同步机制,确保目录的多副本保持一致。 7. **控制协议**:RFC还定义了一些控制协议,例如Paged Results Control,用于...

    Sun one LDAP Management

    - 映射LDAP标识符到DSML中对应的XML元素,以实现数据格式之间的转换。 #### 创建和管理目录条目 - **创建目录条目** - 使用控制台或命令行工具来创建新的目录条目。 - **使用自定义编辑器修改条目** - 提供一个...

    ldap开发指南

    - **对象类与属性类型的扩展**: 当现有的对象类和属性类型无法满足需求时,可以通过自定义Schema来添加新的对象类和属性类型。 - **Schema声明示例**: - **对象类声明**: 如`person`对象类,必须包含`sn`、`cn`属性...

    spring_ldap

    Spring LDAP 通过 `DirContextAdapter` 类进一步简化了对 LDAP 目录中属性的访问和操作。 - **搜索和查找**:利用 `ContextMapper` 可以更直观地进行搜索和查找操作。 - **绑定和修改**:`DirContextAdapter` 提供...

    Spring LDAP 简单使用

    这里的`mapFromAttributes`方法将从LDAP返回的属性映射到自定义的User对象。 **过滤器与查询** Spring LDAP支持基于过滤器的查询,你可以使用`&`(AND)、`|`(OR)、`!`(NOT)和`(**)`(通配符)等构造复杂的...

    基于LDAP实现的信息编目和信息订阅

    1. **自定义Java对象映射**:为了实现信息订阅功能,需要将自定义的Java对象映射到LDAP的自定义Entry上。 2. **信息订阅逻辑**:具体实现细节需要结合业务需求和技术栈来设计,通常包括但不限于: - 订阅者管理:...

    LdapBrowser282

    2. **查询与过滤**:工具支持自定义查询条件,通过 LDAP 滤镜进行高级搜索,找到特定的条目。 3. **编辑与管理**:用户可以直接在工具中修改条目的属性,添加或删除属性值,甚至创建新的条目。 4. **安全设置**:...

    LDAP(轻型目录访问协议)

    3. **灵活性**:LDAP支持多种属性和对象类,可以自定义扩展以适应不同的应用场景。 4. **可集成性**:LDAP可以与其他网络服务(如邮件、DNS、HTTP和SMB/CIFS等)无缝集成,实现统一的身份管理和访问控制。 5. **分布...

    LDAP基础知识教程

    它是LDAP目录中对象类型和属性类型的集合规范。 - **作用**: - **数据一致性**: 确保目录中的所有数据都遵循一定的结构和规则。 - **可扩展性**: 允许管理员根据需要自定义新的对象类型和属性类型。 - **安全性**...

    apache-LDAP

    通过Apache LDAP API,开发者可以构建自定义的目录服务客户端应用,实现企业级的身份验证、权限控制和数据管理功能。 在实际开发中,`apache-ldap-api-1.0.0-M20-bin`这样的包通常包含编译好的库文件,开发者可以...

    ldap 访问AD测试

    标签中的“工具”可能指使用开源工具如 `ldapsearch` 或 `ldapvi` 进行测试,而“源码”可能意味着编写自定义的 LDAP 客户端代码,如使用 Python 的 `ldap3` 库。 10. **安全与最佳实践**: 在访问 AD 时,应确保...

Global site tag (gtag.js) - Google Analytics