1. 下载安装
Openldap for windows,当前版本2.2.29
下载地址:http://download.bergmans.us/openldap/openldap-2.2.29/openldap-2.2.29-db-4.3.29-openssl-0.9.8a-win32_Setup.exe
2. 配置 OpenLdap
1) 打开 D:\openldap\slapd.conf,添加引用的schema文件
include d:/openldap/schema/core.schema
include d:/openldap/schema/corba.schema
include d:/openldap/schema/cosine.schema
include d:/openldap/schema/dyngroup.schema
include d:/openldap/schema/inetorgperson.schema
include d:/openldap/schema/java.schema
include d:/openldap/schema/misc.schema
include d:/openldap/schema/nis.schema
include d:/openldap/schema/openldap.schema
就都加上吧,方便。
2) 还是在 slapd.conf 文件中,找到
suffix “dc=my-domain,dc=com”
rootdn “cn=Manager,dc=my-domain,dc=com”
把这两行改为
suffix "dc=informationDepartment,dc=wti.ac.cn"
rootdn "cn=Manager,dc=informationDepartment,dc=wti.ac.cn"
suffix 就是看自己如何定义了,后面步骤的 ldif 文件必须与它一致。还要注意到这个配置文件中有一个rootpw secret,这个 secret 是 cn=Manager 的密码,以后会用到,不过这里是明文密码,用命令:
slappasswd -h {MD5} -s secret
算出加密的密码 {MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ== 取代配置中的 secret。
3. 启动 OpenLdap
CMD 进入到 D:\openldap 下,运行命令
slapd -d 1
可以看到控制台下打印出一片信息,openldap 默认是用的 Berkeley DB 数据库存储目录数据的。
4. 建立条目
新建一个 ldif(LDAP Data Interchanged Format) 文件(纯文本格式),例如 setup.ldif,文件内容如下
dn: dc=informationDepartment,dc=wti.ac.cn
objectClass: dcObject
objectClass: organization
dc: informationDepartment
o: organization name
dn: ou=roles,dc=informationDepartment,dc=wti.ac.cn
objectClass: top
objectClass: organizationalUnit
ou: roles
dn: ou=people,dc=informationDepartment,dc=wti.ac.cn
objectClass: top
objectClass: organizationalUnit
ou: people
dn: cn=Test Users,ou=roles,dc=informationDepartment,dc=wti.ac.cn
objectClass: groupOfUniqueNames
cn: Test Users
uniqueMember: uid=sspecial,ou=people,dc=informationDepartment,dc=wti.ac.cn
uniqueMember: uid=jbloggs,ou=people,dc=informationDepartment,dc=wti.ac.cn
dn: cn=Special Users,ou=roles,dc=informationDepartment,dc=wti.ac.cn
objectClass: groupOfUniqueNames
cn: Special Users
uniqueMember: uid=sspecial,ou=people,dc=informationDepartment,dc=wti.ac.cn
dn: cn=Admin Users,ou=roles,dc=informationDepartment,dc=wti.ac.cn
objectClass: groupOfUniqueNames
cn: Admin Users
uniqueMember: uid=admin,ou=people,dc=informationDepartment,dc=wti.ac.cn
dn: uid=admin,ou=people,dc=informationDepartment,dc=wti.ac.cn
objectClass: person
objectClass: inetOrgPerson
cn: State App
displayName: App Admin
givenName: App
mail: admin@fake.org
sn: Admin
uid: admin
userPassword: adminpassword
dn: uid=jbloggs,ou=people,dc=informationDepartment,dc=wti.ac.cn
objectClass: person
objectClass: inetOrgPerson
cn: Joe Bloggs
displayName: Joe Bloggs
givenName: Joe
mail: jbloggs@fake.org
sn: Bloggs
uid: jbloggs
userPassword: password
dn: uid=sspecial,ou=people,dc=informationDepartment,dc=wti.ac.cn
objectClass: person
objectClass: inetOrgPerson
cn: Super Special
displayName: Super Special
givenName: Super
mail: sspecial@fake.org
sn: Special
uid: sspecial
userPassword: password
提示:
1) 经常出现的问题是ldif文件的条目格式出错,这可能是对Schema认识不够,认真看下core.schema文件中对各种objectClass的定义和约束;
2) 行末不要有空格;
3) Ldif 文件中每一小段中不要有空行;
5. Ldif 文件导入
JXplorer 的 Import file 失败,不知道什么原因。
而执行命令行导入,ok!
ldapadd -f setup.ldif -x -D "cn=Manager,dc=informationDepartment,dc=wti.ac.cn" -w secret
打开Jxplorer可以看到导入的目录结构如下:
6. LdapTest 认证示例代码
package org.wti.test;
import java.util.*;
import javax.naming.Context;
import javax.naming.NamingException;
import javax.naming.directory.BasicAttribute;
import javax.naming.directory.BasicAttributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
public class LDAPTest {
public LDAPTest() {
}
public static void main(String[] args) {
String root = "dc=informationDepartment,dc=wti.ac.cn"; //root
Hashtable<String, String> env = new Hashtable<String, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://127.0.0.1/" + root);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "cn=Manager,dc=informationDepartment,dc=wti.ac.cn");
env.put(Context.SECURITY_CREDENTIALS, "huangl");
DirContext ctx = null;
try {
// 链接ldap
ctx = new InitialDirContext(env);
System.out.println("认证成功");
/* // 3.添加节点
String newUserName = "user2";
BasicAttributes attrsbu = new BasicAttributes();
BasicAttribute objclassSet = new BasicAttribute("objectclass");
BasicAttribute pass=new BasicAttribute("userpassword");
pass.add("123qweasd");
objclassSet.add("person");
objclassSet.add("top");
objclassSet.add("organizationalPerson");
objclassSet.add("inetOrgPerson");
attrsbu.put(objclassSet);
attrsbu.put(pass);
attrsbu.put("sn", newUserName);
attrsbu.put("uid", newUserName);
ctx.createSubcontext("cn=" + newUserName, attrsbu);*/
}
catch (javax.naming.AuthenticationException e) {
e.printStackTrace();
System.out.println("认证失败");
}
catch (Exception e) {
System.out.println("认证出错:");
e.printStackTrace();
}
if (ctx != null) {
try {
ctx.close();
}
catch (NamingException e) {
//ignore
}
}
System.exit(0);
}
}
- 大小: 42 KB
- 大小: 8.5 KB
分享到:
相关推荐
dSPACE与MATLAB的集成是实现这一目标的关键步骤之一。 1. **链接dSPACE和MATLAB** - 安装完成后,dSPACE通常会自动检测并连接到计算机上已有的MATLAB版本。 - 如果存在多个MATLAB版本,可以通过**DSPACE ...
在开始安装dSPACE软件之前,必须满足一系列的安装环境要求。这包括拥有管理员权限,以及安装所需License文件和dSPACE软件的安装介质。在本教程中,推荐使用DVD光盘进行安装,如果选择硬盘安装,文件应当已经被拷贝到...
- **快速原型设计**:快速原型设计是DSpace的重要特性之一,它允许开发者快速验证控制策略的有效性,加快迭代速度。 - **生产代码生成**:通过TargetLink等工具,DSpace可以从Simulink®/Stateflow®等模型自动生成...
DSpace的工作流引擎是其核心组件之一,用于管理数字对象从提交到发布的整个生命周期。通过预设的工作流步骤,确保每项资源都经过必要的审核和处理,提高了数据质量与管理效率。 **2.10 监督与合作(Supervision and ...
DSpace 是一个开源的数字保存和检索系统,广泛用于学术机构和图书馆,用于管理和发布电子学术文献、研究成果和数据。本学习资料主要围绕 DSpace 的使用手册展开,旨在帮助用户更好地理解和操作 DSpace 平台。 ...
1. DSPACE安装概述: DSPACE软件是一套用于实时计算和模拟的工具,常被用于控制系统的开发和测试。其安装过程可能较为复杂,涉及多个步骤,包括操作系统环境准备、MATLAB版本检查、编译器安装以及DSPACE软件本身的...
DSpace是一款广泛应用于学术机构和研究领域的开源数字存储和检索平台。它允许用户存储、管理和分享各种形式的数字资源,如论文、研究报告、多媒体文件等。DSpace的核心功能包括元数据记录、版本控制、权限管理以及...
本内容介绍了Dspace相关概念,对RCP/HILS/RTI相关内容进行详细介绍,帮助对Dspace有深入的认识,并对基于Dspace搭建流程和方法做了详细阐述,使仿真开发人员对DsPace仿真框架设计能够详细了解使用了具体案例展示了 ...
dSPACE MicroAutoBox II 是由 dSPACE 公司开发的一款高性能实时控制原型系统。它主要用于汽车和其他交通工具的快速控制原型(RCP)开发,旨在帮助工程师们在实际车辆中进行功能测试与验证。MicroAutoBox II 的设计...
**认证** 是指验证用户身份的过程,DSpace 支持多种认证机制,包括本地认证、LDAP、CAS 等。 ##### 2.8 授权 **授权** 是指根据用户的权限来控制对资源的访问。DSpace 使用基于角色的访问控制 (RBAC),这意味着...
【dSPACE DS1103】是嵌入式控制系统开发中的一个重要工具,它是一款高性能的实时仿真和控制硬件。dSPACE系统广泛应用于汽车工程、航空航天、自动化以及其他领域,为工程师们提供了一个强大的平台来测试和验证复杂的...
根据提供的标签"Dspace",我们可以认为本文关注的是Dspace这个主题,不过在内容中提到的"DS1103"实际上是DSPACE硬件的一部分,特指一种型号的控制器硬件,而Controldesk可能是配套的软件,用于与DSPACE硬件交互。...
dspace的数据模型是其核心架构之一,它设计为高度灵活,能够适应不同类型和结构的数字资源。每个资源在系统中被定义为“项”(Items),项可以属于多个“集合”(Collections),而集合则归属于更大的“社区”...
dSPACE是一款在汽车、航空航天和其他工程领域广泛使用的实时仿真和原型系统。本教程涉及的内容包括从功能设计、快速原型创建到目标代码生成、硬件在环(HIL)仿真等多个关键步骤。 首先,dSPACE开发流程遵循V-cycle...
在信息技术领域,Python以其简洁易读的语法和强大的库支持,成为了开发者们青睐的编程语言之一。今天我们要探讨的是一个名为`dspace_stats_collector`的Python库,版本为0.3.6。这个库主要用于收集和处理DSpace系统...
混合动力技术是将传统的内燃机动力系统与一个或多个电动机相结合,以提高汽车的燃油效率并降低排放。混合动力快速控制原型系统能够模拟这种复杂系统的实时控制,有助于缩短开发周期。 在动力传动方面,涉及到动力...
- **PSA Peugeot Citroën**:PSA集团(现为Stellantis的一部分)利用dSPACE的高级硬件进行复杂的发动机管理系统原型设计,证明了dSPACE硬件在支持高精度原型设计方面的卓越性能。 - **Delphi Automotive Systems**...
dSPACE实时仿真系统是由德国dSPACE公司开发的一套基于MATLAB/Simulink的控制系统开发及半实物仿真的软硬件工作平台,实现了和MATLAB/Simulink/RTW的完全无缝连接。dSPACE实时系统拥有实时性强,可靠性高,扩充性好等...