需要新建两个文件
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();
}
}
}
相关推荐
2. **搜索与过滤**:该工具提供了强大的搜索功能,允许用户根据不同的属性和条件查找目录中的特定对象。此外,它还支持构建复杂的过滤器,以便精确匹配所需的信息。 3. **批量操作**:对于需要对大量对象执行相同...
3. **灵活的扩展性**:LDAP支持自定义属性和对象类,使得它可以适应各种不同的业务需求。 4. **安全性**:LDAP支持多种安全措施,如TLS/SSL加密通信、访问控制列表(ACLs)等,确保数据的安全性。 ### 配置LDAP...
在Spring Security 1.3.2版本中,这个模块为开发者提供了与LDAP服务器集成的强大工具,帮助管理用户身份信息和权限控制。 **1. Spring Security LDAP基础** Spring Security LDAP提供了一套API,用于连接和操作LDAP...
最后,记得在你的Spring Boot应用启动类中启用LDAP自动配置,并根据需要实现自定义逻辑,如认证、授权等。这样,你就成功地在Spring Boot项目中集成了LDAP服务,实现了基于LDAP的身份管理和数据操作。 总之,Spring...
3. **灵活的属性定义**:LDAP允许自定义属性,使得它可以适应各种不同类型的目录服务需求,无论是用户账户管理还是设备配置信息存储。 4. **安全认证**:LDAP支持多种认证机制,包括SSL/TLS加密通信,确保数据传输...
5. **自定义属性映射**: 用户可以根据组织的需要定制LDAP属性到MediaWiki用户字段的映射。 **二、配置选项** 在`Extension LDAP Authentication Configuration Options - MediaWiki.htm`文件中,会详细列出可供...
在 LDAP 中,objectClass 的定义可以来自多个来源,包括标准的 LDAP_schema、 vendor-specific schema 和自定义的 schema。每个 objectClass 都有其对应的属性和语义,这些属性可以是必须的、可选的或是禁止的。 ...
6. **扩展与同步**:LDAP协议允许添加自定义操作和扩展,以适应不断变化的需求。同时,提供了同步机制,确保目录的多副本保持一致。 7. **控制协议**:RFC还定义了一些控制协议,例如Paged Results Control,用于...
- 映射LDAP标识符到DSML中对应的XML元素,以实现数据格式之间的转换。 #### 创建和管理目录条目 - **创建目录条目** - 使用控制台或命令行工具来创建新的目录条目。 - **使用自定义编辑器修改条目** - 提供一个...
- **对象类与属性类型的扩展**: 当现有的对象类和属性类型无法满足需求时,可以通过自定义Schema来添加新的对象类和属性类型。 - **Schema声明示例**: - **对象类声明**: 如`person`对象类,必须包含`sn`、`cn`属性...
Spring LDAP 通过 `DirContextAdapter` 类进一步简化了对 LDAP 目录中属性的访问和操作。 - **搜索和查找**:利用 `ContextMapper` 可以更直观地进行搜索和查找操作。 - **绑定和修改**:`DirContextAdapter` 提供...
这里的`mapFromAttributes`方法将从LDAP返回的属性映射到自定义的User对象。 **过滤器与查询** Spring LDAP支持基于过滤器的查询,你可以使用`&`(AND)、`|`(OR)、`!`(NOT)和`(**)`(通配符)等构造复杂的...
1. **自定义Java对象映射**:为了实现信息订阅功能,需要将自定义的Java对象映射到LDAP的自定义Entry上。 2. **信息订阅逻辑**:具体实现细节需要结合业务需求和技术栈来设计,通常包括但不限于: - 订阅者管理:...
2. **查询与过滤**:工具支持自定义查询条件,通过 LDAP 滤镜进行高级搜索,找到特定的条目。 3. **编辑与管理**:用户可以直接在工具中修改条目的属性,添加或删除属性值,甚至创建新的条目。 4. **安全设置**:...
3. **灵活性**:LDAP支持多种属性和对象类,可以自定义扩展以适应不同的应用场景。 4. **可集成性**:LDAP可以与其他网络服务(如邮件、DNS、HTTP和SMB/CIFS等)无缝集成,实现统一的身份管理和访问控制。 5. **分布...
它是LDAP目录中对象类型和属性类型的集合规范。 - **作用**: - **数据一致性**: 确保目录中的所有数据都遵循一定的结构和规则。 - **可扩展性**: 允许管理员根据需要自定义新的对象类型和属性类型。 - **安全性**...
通过Apache LDAP API,开发者可以构建自定义的目录服务客户端应用,实现企业级的身份验证、权限控制和数据管理功能。 在实际开发中,`apache-ldap-api-1.0.0-M20-bin`这样的包通常包含编译好的库文件,开发者可以...
标签中的“工具”可能指使用开源工具如 `ldapsearch` 或 `ldapvi` 进行测试,而“源码”可能意味着编写自定义的 LDAP 客户端代码,如使用 Python 的 `ldap3` 库。 10. **安全与最佳实践**: 在访问 AD 时,应确保...