使用 Java 类更新 OpenLDAP

Posted

技术标签:

【中文标题】使用 Java 类更新 OpenLDAP【英文标题】:Updating OpenLDAP using a Java class 【发布时间】:2010-09-16 04:19:39 【问题描述】:

我需要能够 上的属性。

我尝试过创建一个 LDAP 条目,但它看起来像一个 Java 对象,而不是一个正确的 LDAP 条目。 (咕噜)

导入 javax.naming.Context; 导入 javax.naming.InitialContext; 导入 javax.naming.NamingException; 导入 javax.naming.NameAlreadyBoundException; 导入 javax.naming.directory.*; 导入 java.util.*; 公共类 TestLDAP 静态最终长序列版本UID = -1240113639782150930L; 最终静态字符串 ldapServerName = "localhost:636"; final static String rootdn = "cn=The Manager,ou=mydept,o=mycompany"; 最终静态字符串 rootpass = "密码"; final static String rootContext = "ou=mydept,o=mycompany"; 公共静态无效主要(字符串[]参数) System.setProperty("javax.net.ssl.trustStore", "C:\\cacerts"); 属性 env = new Properties(); env.put("com.sun.jndi.ldap.trace.ber", System.out); env.put(Context.INITIAL_CONTEXT_FACTORY, “com.sun.jndi.ldap.LdapCtxFactory”); env.put(Context.SECURITY_PROTOCOL, "ssl"); env.put(Context.PROVIDER_URL, "ldap://" + ldapServerName + "/" + rootContext ); env.put(Context.SECURITY_PRINCIPAL, rootdn); env.put(Context.SECURITY_CREDENTIALS, rootpass); 尝试 // 使用环境获取初始目录上下文 DirContext ctx = new InitialDirContext( env ); // 添加 LDAP 条目 属性 myAttrs = new BasicAttributes(true); 属性 oc = new BasicAttribute("objectclass"); oc.add("inetOrgPerson"); oc.add("组织人员"); oc.add("人"); oc.add("top"); myAttrs.put(oc); myAttrs.put("cn","test996"); myAttrs.put("sn","test 996"); ctx.bind("cn=test997", myAttrs); 捕捉(NameAlreadyBoundException nabe) System.err.println("值已经被绑定!"); 捕捉(异常 e) e.printStackTrace();

请帮忙!

【问题讨论】:

您使用了错误的方法。您需要致电DirContext.createSubcontext() 【参考方案1】:

我使用 LDAP 已经有一段时间了,但是查看 Javadoc 我认为您使用了错误的方法。尝试类似:

ctx.bind("cn=test997", null, myAttrs);

你读过LDAP tutorial吗?当我不得不做一些 LDAP 工作时,我发现这很有帮助。

【讨论】:

LDAP 教程...是的。谷歌最早提出的地方之一。不幸的是,没有快乐。没有解决问题的信息。无论如何,我非常接近解决问题。完成后将发布解决方案。

以上是关于使用 Java 类更新 OpenLDAP的主要内容,如果未能解决你的问题,请参考以下文章

Java日志组件logback使用:加载非类路径下的配置文件并设置定时更新

Java中的原子操作类

阿里最新面试必备项之Java的String类,持续更新中!

怎么使用java操作mongodb更新整个文档

Java并发编程原理与实战十三:JDK提供的原子类原理与使用

第七章 Java中的13个原子操作类