gpt4 book ai didi

java - 如何使用 JNDI 将 OU 添加到 LDAP

转载 作者:行者123 更新时间:2023-11-30 06:37:29 24 4
gpt4 key购买 nike

我想从 JNDI 添加一个新的 OU 到 LDAP。我的 LDAP 服务器是从 OpenDS 设置的。

这是我的代码:

public static void main(String args[])
{
String INITCTX = "com.sun.jndi.ldap.LdapCtxFactory";
String MY_HOST = "ldap://localhost:1389";
String MGR_DN = "cn=Directory Manager";
String MGR_PW = "password";
String MY_SEARCHBASE = "dc=QuizPortal";

try
{
Hashtable env = new Hashtable();

env.put(Context.INITIAL_CONTEXT_FACTORY, INITCTX);

env.put(Context.PROVIDER_URL, MY_HOST);

env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, MGR_DN);
env.put(Context.SECURITY_CREDENTIALS, MGR_PW);

DirContext ctx = new InitialDirContext(env);

Attributes attrs = new BasicAttributes(true); // case-ignore
Attribute objclass = new BasicAttribute("objectclass");
objclass.add("top");
objclass.add("organizationalUnit");
attrs.put(objclass);

ctx.createSubcontext("ou=NewOu", attrs);
}

catch(Exception e)
{
e.printStackTrace();
System.exit(1);
}
}

这是错误信息:

javax.naming.NameNotFoundException: [LDAP: error code 32 - The provided entry ou=NewOu cannot be added because it does not have a parent and is not defined as one of the suffixes within the Directory Server]; remaining name 'ou=NewOu'
at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3066)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2987)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2794)
at com.sun.jndi.ldap.LdapCtx.c_createSubcontext(LdapCtx.java:788)
at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_createSubcontext(ComponentDirContext.java:319)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.createSubcontext(PartialCompositeDirContext.java:248)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.createSubcontext(PartialCompositeDirContext.java:236)
at javax.naming.directory.InitialDirContext.createSubcontext(InitialDirContext.java:178)
at JUNDIAdd2.main(JUNDIAdd2.java:43)

添加信息:我有 o=IT, dc=QuizPortal 我想在新的 OU 中添加。

谁能指导我解决这个错误?

最佳答案

尝试:

ctx.bind("ou=NewOu,o=IT", null, attrs);

您可能需要先设置 ou 属性:

attrs.put("ou", "NewOu");

关于java - 如何使用 JNDI 将 OU 添加到 LDAP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3447529/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com