我试过了
java.util.Hashtable;
import java.util.Properties;
import java.util.jar.Attributes;
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 Main{
public static void main(String[] args) {
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://localhost:10389");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL,"uid=admin,ou=system"); // specify the username
env.put(Context.SECURITY_CREDENTIALS,"secret");// specify the password
// TODO code application logic here
// entry's DN
String entryDN = "cn=myadmins,ou=groups,ou=system";
// entry's attributes
Attribute cn = new BasicAttribute("cn", "myadmins");
Attribute oc = new BasicAttribute("objectClass");
oc.add("top");
oc.add("groupOfUniqueNames");
DirContext ctx = null;
try {
// get a handle to an Initial DirContext
ctx = new InitialDirContext(env);
// build the entry
BasicAttributes entry = new BasicAttributes();
entry.put(cn);
entry.put(oc);
// Add the entry
ctx.createSubcontext(entryDN, entry);
// System.out.println( "AddUser: added entry " + entryDN + ".");
} catch (NamingException e) {
System.err.println("AddUser: error adding entry." + e);
}
}
}
我正在研究 DS 的默认架构示例。
但我明白了
Required attributes [uniqueMember(2.5.4.50)] not found within entry cn=myadmins,ou=groups,ou=system]; remaining name 'cn=myadmins,ou=groups,ou=system'
我查看了其他组条目,它具有 uniqueMember
属性,其值:
0.9.2342.19200300.100.1.1=admin,2.5.4.11=system
如何为我的新组指定 uniqueMember 属性的值,
我必须承认包含点的数字对我来说有点复杂。
谢谢
最佳答案
uniqueMember
属性具有 DN 语法。这意味着必须将专有名称用作值,而不是相对专有名称(或专有名称的组成部分)。专有名称类似于文件系统上的完全限定路径名。
将 uniqueMember
属性值视为指向作为组成员的专有名称的“指针”。
更新:
包含点的数字
是一个OID
。 LDAP 中的属性、控件和其他事物都使用 OID,例如,像 cn
这样的属性有一个与之关联的 OID,用于在架构中唯一地标识它。
关于java - 如何使用 JNDI 添加新组到 ApacheDS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11848722/