- 浏览: 537704 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
zfx1982:
楼主能把doubango和webrtc2sip的源码发我一份么 ...
CentOS下编译webrtc2sip实战 -
zfx1982:
请问在编译doubango的时候configure总是说少sr ...
CentOS下编译webrtc2sip实战 -
cgs1999:
845896876 写道老师你好,我发现// 自定义属性 ...
使用Java操作LDAP案例 -
845896876:
老师你好,我发现// 自定义属性 a ...
使用Java操作LDAP案例 -
myitela:
NAT即地址转换,也可以是内网地址与外网地址的转换。如nat1 ...
NAT与NAT穿越学习总结
1 案例描述
公司平台使用LDAP来储存企业或用户的信息,在系统的运行过程中需要对LDAP存储的信息进行相关的访问和操作,那么在Java中是如何操作LDAP的呢?
2 案例分析
LDAP是一个得到关于人或者资源的集中、静态数据的快速方式,是一种存储模式和访问协议。
UnboundID LDAP SDK for Java是一个快速、综合易用的 LDAP 目录服务的 Java 客户端API,它提供了一套快速、强大、用户友好并且开源的Java API来与LDAP目录服务器交互,可读写 LDIF、使用BASE64 和 ASN.1 BER 进行编码解码,支持安全通信等特性,要求 Java 1.5 或者更新版本支持,同时也支持 Android 平台。与其它基于Java的LDAP APIs相比,它具有更好的性能、更易于使用,功能更多,而且还是唯一一个不断有活跃开发和增强的SDK。
在软件开发中,对数据的操作无非就是增加、删除、修改、查询等4种操作,对LDAP的操作也一样。下面我们一起探讨在Java中如何使用UnboundID LDAP SDK操作LDAP。
3 解决过程
3.1 准备
1、Java客户端API(UnboundID LDAP SDK for Java)
下载地址 http://sourceforge.net/projects/ldap-sdk/files/
2、LDAP客户端(Apache Directory Studio)
下载地址 http://directory.apache.org/studio/
3.2 定义参数
3.3 建立连接
3.4 创建数据
1、创建DC对象
2、创建组织
3、创建组织单元
4、创建用户
3.5 修改数据
3.6 删除数据
3.7 查询数据
3.8 测试代码
4 解决结果
1、输出结果
2、使用LDAP客户端Apache Directory Studio连接LDAP服务查看LDAP数据,如下图所示
5 总结
从解决过程和解决结果,我们可知在Java中使用UnboundID LDAP SDK for Java所提供的API来操作LDAP,实现对LDAP数据进行增加、修改、删除、查询都很简单和易用。
6 源代码
完整测试代码请查看下面附件
完整代码点击这里下载
可以的,可能是你没有设置objectClass造成。试试下面这段代码~~(由于没环境,未经测试~~)
还是提示没有定义的类型,估计是没有配置objectclass,应该在哪里配置objectclass那
objectClass也是一个属性,你看看自己的代码中是否有类似下面设置objectClass属性的代码。
需要注意的是,指定的objectClass属性account必须存在!
可以的,可能是你没有设置objectClass造成。试试下面这段代码~~(由于没环境,未经测试~~)
可以的,可能是你没有设置objectClass造成。试试下面这段代码~~(由于没环境,未经测试~~)
可以的,可能是你没有设置objectClass造成。试试下面这段代码~~(由于没环境,未经测试~~)
还是提示没有定义的类型,估计是没有配置objectclass,应该在哪里配置objectclass那
可以的,可能是你没有设置objectClass造成。试试下面这段代码~~(由于没环境,未经测试~~)
可以参考一下这个 http://tonyguo.blog.51cto.com/379574/182432
挺全的
1、不好意思,之前忙给忘了。今天测试了一下,测试是成功的。
2、估计是环境问题,我这边使用的是OpenLdap进行测试的,OpenLdap安装的时候已经初始化了根目录dc=com
初始化的两个配置文件
(1)init.ldif
(2)slapd.conf
(3)执行的命令
\cp ./slapd.conf /usr/local/openldap/etc/openldap/
/usr/local/openldap/sbin/slapadd -v -l ./init.ldif
这个应该是参数错误造成,,现在没有环境不好测试,明天搭建好后我看看。
公司平台使用LDAP来储存企业或用户的信息,在系统的运行过程中需要对LDAP存储的信息进行相关的访问和操作,那么在Java中是如何操作LDAP的呢?
2 案例分析
LDAP是一个得到关于人或者资源的集中、静态数据的快速方式,是一种存储模式和访问协议。
UnboundID LDAP SDK for Java是一个快速、综合易用的 LDAP 目录服务的 Java 客户端API,它提供了一套快速、强大、用户友好并且开源的Java API来与LDAP目录服务器交互,可读写 LDIF、使用BASE64 和 ASN.1 BER 进行编码解码,支持安全通信等特性,要求 Java 1.5 或者更新版本支持,同时也支持 Android 平台。与其它基于Java的LDAP APIs相比,它具有更好的性能、更易于使用,功能更多,而且还是唯一一个不断有活跃开发和增强的SDK。
在软件开发中,对数据的操作无非就是增加、删除、修改、查询等4种操作,对LDAP的操作也一样。下面我们一起探讨在Java中如何使用UnboundID LDAP SDK操作LDAP。
3 解决过程
3.1 准备
1、Java客户端API(UnboundID LDAP SDK for Java)
下载地址 http://sourceforge.net/projects/ldap-sdk/files/
2、LDAP客户端(Apache Directory Studio)
下载地址 http://directory.apache.org/studio/
3.2 定义参数
// 当前配置信息 private static String ldapHost = "172.16.160.196"; private static int ldapPort = 389; private static String ldapBindDN = "cn=manager,dc=com";; private static String ldapPassword = "******"; private static LDAPConnection connection = null;
3.3 建立连接
/** 连接LDAP */ public static void openConnection() { if (connection == null) { try { connection = new LDAPConnection(ldapHost, ldapPort, ldapBindDN, ldapPassword); } catch (Exception e) { System.out.println("连接LDAP出现错误:\n" + e.getMessage()); } } }
3.4 创建数据
1、创建DC对象
/** 创建DC */ public static void createDC(String baseDN, String dc) { String entryDN = "dc=" + dc + "," + baseDN; try { // 连接LDAP openConnection(); SearchResultEntry entry = connection.getEntry(entryDN); if (entry == null) { // 不存在则创建 ArrayList<Attribute> attributes = new ArrayList<Attribute>(); attributes.add(new Attribute("objectClass", "top", "organization", "dcObject")); attributes.add(new Attribute("dc", dc)); attributes.add(new Attribute("o", dc)); connection.add(entryDN, attributes); System.out.println("创建DC" + entryDN + "成功!"); } else { System.out.println("DC " + entryDN + "已存在!"); } } catch (Exception e) { System.out.println("创建DC出现错误:\n" + e.getMessage()); } }
2、创建组织
/** 创建组织 */ public static void createO(String baseDN, String o) { String entryDN = "o=" + o + "," + baseDN; try { // 连接LDAP openConnection(); SearchResultEntry entry = connection.getEntry(entryDN); if (entry == null) { // 不存在则创建 ArrayList<Attribute> attributes = new ArrayList<Attribute>(); attributes.add(new Attribute("objectClass", "top", "organization")); attributes.add(new Attribute("o", o)); connection.add(entryDN, attributes); System.out.println("创建组织" + entryDN + "成功!"); } else { System.out.println("组织" + entryDN + "已存在!"); } } catch (Exception e) { System.out.println("创建组织出现错误:\n" + e.getMessage()); } }
3、创建组织单元
/** 创建组织单元 */ public static void createOU(String baseDN, String ou) { String entryDN = "ou=" + ou + "," + baseDN; try { // 连接LDAP openConnection(); SearchResultEntry entry = connection.getEntry(entryDN); if (entry == null) { // 不存在则创建 ArrayList<Attribute> attributes = new ArrayList<Attribute>(); attributes.add(new Attribute("objectClass", "top", "organizationalUnit")); attributes.add(new Attribute("ou", ou)); connection.add(entryDN, attributes); System.out.println("创建组织单元" + entryDN + "成功!"); } else { System.out.println("组织单元" + entryDN + "已存在!"); } } catch (Exception e) { System.out.println("创建组织单元出现错误:\n" + e.getMessage()); } }
4、创建用户
/** 创建用户 */ public static void createEntry(String baseDN, String uid) { String entryDN = "uid=" + uid + "," + baseDN; try { // 连接LDAP openConnection(); SearchResultEntry entry = connection.getEntry(entryDN); if (entry == null) { // 不存在则创建 ArrayList<Attribute> attributes = new ArrayList<Attribute>(); attributes.add(new Attribute("objectClass", "top", "account")); attributes.add(new Attribute("uid", uid)); connection.add(entryDN, attributes); System.out.println("创建用户" + entryDN + "成功!"); } else { System.out.println("用户" + entryDN + "已存在!"); } } catch (Exception e) { System.out.println("创建用户出现错误:\n" + e.getMessage()); } }
3.5 修改数据
/** 修改用户信息 */ public static void modifyEntry(String requestDN, Map<String,String> data) { try { // 连接LDAP openConnection(); SearchResultEntry entry = connection.getEntry(requestDN); if (entry == null) { System.out.println(requestDN + " user:" + requestDN + " 不存在); return; } // 修改信息 ArrayList<Modification> md = new ArrayList<Modification>(); for(String key : data.keySet()) { md.add(new Modification(ModificationType.REPLACE, key, data.get(key))); } connection.modify(requestDN, md); System.out.println("修改用户信息成!"); } catch (Exception e) { System.out.println("修改用户信息出现错误:\n" + e.getMessage()); } }
3.6 删除数据
/** 删除用户信息 */ public static void deleteEntry(String requestDN) { try { // 连接LDAP openConnection(); SearchResultEntry entry = connection.getEntry(requestDN); if (entry == null) { System.out.println(requestDN + " user:" + requestDN + "不存在"); return; } // 删除 connection.delete(requestDN); System.out.println("删除用户信息成!"); } catch (Exception e) { System.out.println("删除用户信息出现错误:\n" + e.getMessage()); } }
3.7 查询数据
/** 查询 */ public static void queryLdap(String searchDN, String filter) { try { // 连接LDAP openConnection(); // 查询企业所有用户 SearchRequest searchRequest = new SearchRequest(searchDN, SearchScope.SUB, "(" + filter + ")"); searchRequest.addControl(new SubentriesRequestControl()); SearchResult searchResult = connection.search(searchRequest); System.out.println(">>>共查询到" + searchResult.getSearchEntries().size() + "条记录"); int index = 1; for (SearchResultEntry entry : searchResult.getSearchEntries()) { System.out.println((index++) + "\t" + entry.getDN()); } } catch (Exception e) { System.out.println("查询错误,错误信息如下:\n" + e.getMessage()); } }
3.8 测试代码
public static void main(String[] args) { String root = "com"; String dc = "truesens"; String o = "kedacom"; String ou = "people"; String uid = "admin"; String filter = "objectClass=account"; createDC("dc=" + root, dc); createO("dc=" + dc + ",dc=" + root, o); createOU("o=" + o + ",dc=" + dc + ",dc=" + root, ou); createEntry("ou=" + ou + ",o=" + o + ",dc=" + dc + ",dc=" + root, uid); queryLdap("ou=" + ou + ",o=" + o + ",dc=" + dc + ",dc=" + root, filter); HashMap<String,String> data = new HashMap<String,String>(0); data.put("userid", uid); modifyEntry("uid="+uid+",ou="+ou+",o="+o+",dc="+dc+",dc="+root, data); deleteEntry("uid="+uid+",ou="+ou + ",o="+o+",dc=" + dc + ",dc=" + root); queryLdap("ou=" + ou + ",o=" + o + ",dc=" + dc + ",dc=" + root, filter); }
4 解决结果
1、输出结果
创建代理商dc=truesens,dc=com成功! 创建组织o=kedacom,dc=truesens,dc=com成功! 创建组织单元ou=people,o=kedacom,dc=truesens,dc=com成功! 创建用户uid=admin,ou=people,o=kedacom,dc=truesens,dc=com成功! >>>共查询到1条记录 1 uid=admin,ou=people,o=kedacom,dc=truesens,dc=com 修改用户信息成功! 删除用户信息成功! >>>共查询到0条记录
2、使用LDAP客户端Apache Directory Studio连接LDAP服务查看LDAP数据,如下图所示
5 总结
从解决过程和解决结果,我们可知在Java中使用UnboundID LDAP SDK for Java所提供的API来操作LDAP,实现对LDAP数据进行增加、修改、删除、查询都很简单和易用。
6 源代码
完整测试代码请查看下面附件
完整代码点击这里下载
评论
11 楼
cgs1999
2013-04-18
Spring_g 写道
cgs1999 写道
Spring_g 写道
想问一下,创建用户时可以为entry添加自定义的属性吗,我尝试着添加的提示没有定义的类型
可以的,可能是你没有设置objectClass造成。试试下面这段代码~~(由于没环境,未经测试~~)
/** 创建用户 */ public static void createEntry(String baseDN, String uid) { String entryDN = "uid=" + uid + "," + baseDN; try { // 连接LDAP openConnection(); SearchResultEntry entry = connection.getEntry(entryDN); if (entry == null) { // 不存在则创建 ArrayList<Attribute> attributes = new ArrayList<Attribute>(); attributes.add(new Attribute("objectClass", "top", "account")); attributes.add(new Attribute("uid", uid)); // 自定义属性 attributes.add(new Attribute("enable", enable)); attributes.add(new Attribute("isVoid", "1")); attributes.add(new Attribute("password", "md5password")); attributes.add(new Attribute("enableCall", "1")); attributes.add(new Attribute("enableRoam", "1")); connection.add(entryDN, attributes); System.out.println("创建用户" + entryDN + "成功!"); } else { System.out.println("用户" + entryDN + "已存在!"); } } catch (Exception e) { System.out.println("创建用户出现错误:\n" + e.getMessage()); } }
还是提示没有定义的类型,估计是没有配置objectclass,应该在哪里配置objectclass那
objectClass也是一个属性,你看看自己的代码中是否有类似下面设置objectClass属性的代码。
需要注意的是,指定的objectClass属性account必须存在!
attributes.add(new Attribute("objectClass", "top", "account"));
10 楼
Spring_g
2013-04-18
cgs1999 写道
Spring_g 写道
想问一下,创建用户时可以为entry添加自定义的属性吗,我尝试着添加的提示没有定义的类型
可以的,可能是你没有设置objectClass造成。试试下面这段代码~~(由于没环境,未经测试~~)
/** 创建用户 */ public static void createEntry(String baseDN, String uid) { String entryDN = "uid=" + uid + "," + baseDN; try { // 连接LDAP openConnection(); SearchResultEntry entry = connection.getEntry(entryDN); if (entry == null) { // 不存在则创建 ArrayList<Attribute> attributes = new ArrayList<Attribute>(); attributes.add(new Attribute("objectClass", "top", "account")); attributes.add(new Attribute("uid", uid)); // 自定义属性 attributes.add(new Attribute("enable", enable)); attributes.add(new Attribute("isVoid", "1")); attributes.add(new Attribute("password", "md5password")); attributes.add(new Attribute("enableCall", "1")); attributes.add(new Attribute("enableRoam", "1")); connection.add(entryDN, attributes); System.out.println("创建用户" + entryDN + "成功!"); } else { System.out.println("用户" + entryDN + "已存在!"); } } catch (Exception e) { System.out.println("创建用户出现错误:\n" + e.getMessage()); } }
cgs1999 写道
Spring_g 写道
想问一下,创建用户时可以为entry添加自定义的属性吗,我尝试着添加的提示没有定义的类型
可以的,可能是你没有设置objectClass造成。试试下面这段代码~~(由于没环境,未经测试~~)
/** 创建用户 */ public static void createEntry(String baseDN, String uid) { String entryDN = "uid=" + uid + "," + baseDN; try { // 连接LDAP openConnection(); SearchResultEntry entry = connection.getEntry(entryDN); if (entry == null) { // 不存在则创建 ArrayList<Attribute> attributes = new ArrayList<Attribute>(); attributes.add(new Attribute("objectClass", "top", "account")); attributes.add(new Attribute("uid", uid)); // 自定义属性 attributes.add(new Attribute("enable", enable)); attributes.add(new Attribute("isVoid", "1")); attributes.add(new Attribute("password", "md5password")); attributes.add(new Attribute("enableCall", "1")); attributes.add(new Attribute("enableRoam", "1")); connection.add(entryDN, attributes); System.out.println("创建用户" + entryDN + "成功!"); } else { System.out.println("用户" + entryDN + "已存在!"); } } catch (Exception e) { System.out.println("创建用户出现错误:\n" + e.getMessage()); } }
cgs1999 写道
Spring_g 写道
想问一下,创建用户时可以为entry添加自定义的属性吗,我尝试着添加的提示没有定义的类型
可以的,可能是你没有设置objectClass造成。试试下面这段代码~~(由于没环境,未经测试~~)
/** 创建用户 */ public static void createEntry(String baseDN, String uid) { String entryDN = "uid=" + uid + "," + baseDN; try { // 连接LDAP openConnection(); SearchResultEntry entry = connection.getEntry(entryDN); if (entry == null) { // 不存在则创建 ArrayList<Attribute> attributes = new ArrayList<Attribute>(); attributes.add(new Attribute("objectClass", "top", "account")); attributes.add(new Attribute("uid", uid)); // 自定义属性 attributes.add(new Attribute("enable", enable)); attributes.add(new Attribute("isVoid", "1")); attributes.add(new Attribute("password", "md5password")); attributes.add(new Attribute("enableCall", "1")); attributes.add(new Attribute("enableRoam", "1")); connection.add(entryDN, attributes); System.out.println("创建用户" + entryDN + "成功!"); } else { System.out.println("用户" + entryDN + "已存在!"); } } catch (Exception e) { System.out.println("创建用户出现错误:\n" + e.getMessage()); } }
9 楼
cgs1999
2013-04-18
Spring_g 写道
想问一下,创建用户时可以为entry添加自定义的属性吗,我尝试着添加的提示没有定义的类型
可以的,可能是你没有设置objectClass造成。试试下面这段代码~~(由于没环境,未经测试~~)
/** 创建用户 */ public static void createEntry(String baseDN, String uid) { String entryDN = "uid=" + uid + "," + baseDN; try { // 连接LDAP openConnection(); SearchResultEntry entry = connection.getEntry(entryDN); if (entry == null) { // 不存在则创建 ArrayList<Attribute> attributes = new ArrayList<Attribute>(); attributes.add(new Attribute("objectClass", "top", "account")); attributes.add(new Attribute("uid", uid)); // 自定义属性 attributes.add(new Attribute("enable", enable)); attributes.add(new Attribute("isVoid", "1")); attributes.add(new Attribute("password", "md5password")); attributes.add(new Attribute("enableCall", "1")); attributes.add(new Attribute("enableRoam", "1")); connection.add(entryDN, attributes); System.out.println("创建用户" + entryDN + "成功!"); } else { System.out.println("用户" + entryDN + "已存在!"); } } catch (Exception e) { System.out.println("创建用户出现错误:\n" + e.getMessage()); } }
8 楼
Spring_g
2013-04-18
想问一下,创建用户时可以为entry添加自定义的属性吗,我尝试着添加的提示没有定义的类型
7 楼
cgs1999
2012-08-17
a498740995 写道
首次接触ldap。。很多都不懂。请问有什么资料可以参考下吗?我们也是用的openldap
可以参考一下这个 http://tonyguo.blog.51cto.com/379574/182432
挺全的
6 楼
a498740995
2012-08-16
首次接触ldap。。很多都不懂。请问有什么资料可以参考下吗?我们也是用的openldap
5 楼
a498740995
2012-08-16
我是想单独添一个二级的dc,比如:dc=cn,dc=com这样的。是不是dcObject不是structional类型的。所以没法再根dc下添加dc。。
加dc必须要加组织吗?
加dc必须要加组织吗?
4 楼
cgs1999
2012-08-16
a498740995 写道
测试成功了吗?
1、不好意思,之前忙给忘了。今天测试了一下,测试是成功的。
2、估计是环境问题,我这边使用的是OpenLdap进行测试的,OpenLdap安装的时候已经初始化了根目录dc=com
初始化的两个配置文件
(1)init.ldif
# Organization for Example Corporation dn: dc=com objectClass: dcObject objectClass: organization dc: com o: com
(2)slapd.conf
# # See slapd.conf(5) for details on configuration options. # This file should NOT be world readable. # #include /usr/local/openldap/etc/openldap/schema/core.schema include /usr/local/openldap/etc/openldap/schema/core.schema include /usr/local/openldap/etc/openldap/schema/corba.schema include /usr/local/openldap/etc/openldap/schema/cosine.schema include /usr/local/openldap/etc/openldap/schema/inetorgperson.schema include /usr/local/openldap/etc/openldap/schema/dyngroup.schema include /usr/local/openldap/etc/openldap/schema/java.schema include /usr/local/openldap/etc/openldap/schema/misc.schema include /usr/local/openldap/etc/openldap/schema/nis.schema include /usr/local/openldap/etc/openldap/schema/openldap.schema # Define global ACLs to disable default read access. # 禁止匿名连接 disallow bind_anon # Do not enable referrals until AFTER you have a working directory # service AND an understanding of referrals. #referral ldap://root.openldap.org pidfile /usr/local/openldap/var/run/slapd.pid argsfile /usr/local/openldap/var/run/slapd.args # Load dynamic backend modules: # modulepath /usr/local/openldap/libexec/openldap # moduleload back_bdb.la # moduleload back_hdb.la # moduleload back_ldap.la # Sample security restrictions # Require integrity protection (prevent hijacking) # Require 112-bit (3DES or better) encryption for updates # Require 63-bit encryption for simple bind # security ssf=1 update_ssf=112 simple_bind=64 # Sample access control policy: # Root DSE: allow anyone to read it # Subschema (sub)entry DSE: allow anyone to read it # Other DSEs: # Allow self write access # Allow authenticated users read access # Allow anonymous users to authenticate # Directives needed to implement policy: # access to dn.base="" by * read # access to dn.base="cn=Subschema" by * read # access to * # by self write # by users read # by anonymous auth # # if no access controls are present, the default policy # allows anyone and everyone to read anything but restricts # updates to rootdn. (e.g., "access to * by * read") # # rootdn can always read and write EVERYTHING! ####################################################################### # BDB database definitions ####################################################################### database bdb suffix "dc=com" rootdn "cn=Manager,dc=com" # Cleartext passwords, especially for the rootdn, should # be avoid. See slappasswd(8) and slapd.conf(5) for details. # Use of strong authentication encouraged. rootpw {SHA}DMMdriK8amL0g7IPx7gMJNpkMpM= # The database directory MUST exist prior to running slapd AND # should only be accessible by the slapd and slap tools. # Mode 700 recommended. directory /usr/local/openldap/var/openldap-data # Indices to maintain index objectClass eq
(3)执行的命令
\cp ./slapd.conf /usr/local/openldap/etc/openldap/
/usr/local/openldap/sbin/slapadd -v -l ./init.ldif
3 楼
a498740995
2012-08-15
测试成功了吗?
2 楼
cgs1999
2012-08-08
a498740995 写道
我找着跑了遍。添加dc时报错:
objectClass:value #1 invalid per syntax...
什么意思啊?
objectClass:value #1 invalid per syntax...
什么意思啊?
这个应该是参数错误造成,,现在没有环境不好测试,明天搭建好后我看看。
1 楼
a498740995
2012-08-07
我找着跑了遍。添加dc时报错:
objectClass:value #1 invalid per syntax...
什么意思啊?
objectClass:value #1 invalid per syntax...
什么意思啊?
发表评论
-
MySQL中Update的执行效率测试及验证
2016-12-06 16:22 69351、引言 某日,在讨论解决生产环境的问题时,一同事问说增加条件 ... -
MySQL定时器实战
2016-11-29 17:38 22061、引言 项目商用环境上,用户反馈有个统计存在问题,排查后 ... -
用Java实现N*N的标准数独及对角线数独解题
2016-10-11 11:25 35751、引言 前一段时间迷 ... -
在Spring项目中实现动态创建数据库
2017-06-21 16:31 52871、问题描述 在使用Sprin ... -
改进现有架构支持HTTPS服务
2016-06-23 16:57 01、引言 nginx使用ssl模块配置HTTPS支持 ht ... -
CentOS下从源码安装Asterisk实战
2016-05-20 20:23 37530、引言 在研究WebRTC服 ... -
EasyUI学习(1)- 入门
2015-12-14 17:20 00、引言 前段时间,在项目开发过程中使用了EasyUI的部分组 ... -
JS实现的3级联动例子
2015-06-17 23:10 1400朋友项目需要实现3级联动,需要JS实现的,网上找的例子有些复杂 ... -
JSBuilder2介绍及应用范例
2014-08-27 17:58 01、引言 Web项目开发过程中,使用到多个第三方的插件,同时, ... -
实现CSS样式文件中图标的可视化
2014-06-26 14:39 5086关键词: CSS,EasyUI ... -
jquery选择器学习范例
2014-04-22 20:54 0http://www.w3school.com.cn/jque ... -
通过webrtc2sip实现web客户端sipML5与SIP客户端Jtisi对通
2014-01-13 19:53 00、引言 在研究WebRTC服 ... -
NAT与NAT穿越学习总结
2013-12-23 19:19 205361、引言网络地址转换 ... -
完全清除Desktop_1.ini和Desktop_2.ini
2013-12-06 17:21 72251、引言 Windows7工作机进入系统就会弹出“deskto ... -
CentOS下搭建Asterisk+SIPml5实战
2013-11-14 14:53 00、引言 在研究SIPml5信令处理时,需要搭建环境SIPml ... -
CentOS下编译webrtc2sip实战
2013-11-13 10:39 153140、引言 在研究WebRTC服 ... -
Java实现RTP流转发服务器
2013-10-24 17:36 00、引言 在做多方视频会议系统时,需要有代理服务器来转发视频平 ... -
利用mysql日志排查数据异常问题
2013-03-21 16:52 01、案例描述 2、MySQL日志 3、解决过程 (1) ... -
Java中通过MySQL的行锁解决并发写的问题
2012-12-22 12:45 01、案例描述 开发会议管理项目中,涉及会议管理系统和视频会议平 ... -
【算法】基于时间段的有限资源算法
2013-03-07 12:20 24561、案例描述 最近做会议管理系统,预约会议需要一个算法来判断在 ...
相关推荐
提供的压缩包"jndi.zip"可能包含了实现上述操作的Java源码示例,这些示例可以帮助开发者理解如何在实际项目中使用JNDI与LDAP的集成。 总结来说,JNDI和LDAP的结合使得Java开发者能轻松地管理和操作分布式目录服务...
LDAP代码操作Demo,LDAP操作代码样例 初始化LDAP 目录服务上下文、绑定/创建LDAP条目对象、获取条目属性、修改条目属性等实例
Spring LDAP 是一个强大的Java库,它为开发人员提供了一个简单且直观的接口,用于与LDAP(轻量级目录访问协议)服务器进行交互。在本文中,我们将深入探讨Spring LDAP 1.3.0版本,包括它的特点、用途、安装过程以及...
Spring LDAP使得开发者可以使用熟悉的Spring编程风格来处理LDAP操作,简化了与目录服务器的交互。 ### JNDI概述 JNDI是一个API,用于访问多种命名和目录服务。在Java应用中,JNDI常用来查找和绑定资源,如数据源、...
8. **API与开发**:讨论如何使用Java、Python或其他编程语言的SDK来与IBM LDAP交互,开发自定义应用或脚本。 9. **备份与恢复**:讲解如何备份和恢复IBM LDAP数据,以防止数据丢失,确保业务连续性。 10. **案例...
- LDAP API使用:介绍编程接口,如Java的JNDI和Python的ldap3库,用于开发与LDAP交互的应用程序。 9. **案例研究与最佳实践**: - 实战经验:分享实际部署中的挑战和解决方案,提供成功案例。 - 最佳实践:总结...
通过上述介绍,我们了解到在Windows XP环境下安装和配置OpenLDAP的基本步骤,包括如何创建初始化数据、启动和测试LDAP服务器,以及如何使用JNDI API来编写Java程序访问LDAP服务器。这些知识点对于初学者来说非常实用...
Apache Shiro是一个强大的Java安全框架,它提供了身份验证(Authentication)、授权(Authorization)以及会话管理(Session Management)等功能,简化了开发人员在构建安全应用时的复杂性。本案例将深入探讨Shiro...
它的主要目标是提供一个易于使用的JSP标签库,以便在JSP页面中直接进行LDAP查询、添加、删除和修改操作,无需编写复杂的Java代码。这大大降低了开发门槛,提高了开发效率。 二、EasyLdap 1_0-src源码解析 "easyldap...
例如Java有JNDI (Java Naming and Directory Interface),Python有python-ldap库等。 - 应用程序可以通过LDAP进行用户认证、信息检索等操作。 #### 六、案例分析 假设一个公司需要构建一个员工信息管理系统,其中...
本文详细介绍了如何将 Cognos 8.3 与 OpenDS-1.0.0 进行集成认证的过程,包括 OpenDS 的安装、配置 LDAP 服务、设置 Cognos 的匿名访问权限、重启 Cognos 服务以及使用 Java 代码添加、修改和查找 LDAP 用户的具体...
Java和ODMG 3.0规范 基础 ODMG的核心概念 对象定义语言 小结 第11章 目录服务与JNDI 命名与目录服务 使用JNDI JAVA与LDAP 从理论到实践 标准的LDAP操作 LDAP服务器改进 在LDAP...
- **Configuring Popular Security Services**(配置流行的安全服务):讲解了如何使用 Java PAM 配置常用的第三方安全服务,如 LDAP、Kerberos 等。 - **Installing Additional PAM Modules**(安装额外的 PAM ...
压缩包内的文件"基于整合了Struts和Hibernate的J2EE架构的用户权限管理系统的设计与实现.pdf"可能包含了一个实际项目案例,这个案例使用了上述的某些技术,比如 J2EE 架构、Struts(一个 MVC 框架)和 Hibernate(一...
而 Tomcat 是一个广泛使用的 Java 应用服务器。 首先,单点登录(Single Sign-On, SSO)是指用户只需登录一次,就能访问多个相互信任的应用系统,无需再次输入认证信息。这种机制简化了用户的操作,同时提高了安全...
总的来说,"net.rar_Java企业门户网"项目是一个全面的Java EE学习和实践案例,涵盖了企业级应用开发的多个关键环节,包括但不限于:服务器端编程、数据库操作、用户界面设计、安全机制以及系统架构设计。无论是对...
- **LDAP集成**:了解如何将Java应用程序与LDAP服务器集成,实现用户认证和权限管理。 **6. RMI** - **远程调用**:掌握如何使用RMI实现远程对象的调用。 - **对象序列化**:了解对象序列化的原理及其实现方法。...
在本案例中,我们可以看到"spring mvc 权限管理后台框架源码"作为关键内容,这暗示了我们将使用Spring Security或者自定义的解决方案来实现权限控制。 首先,让我们深入了解Spring Security。这是一个为Java应用...