java - 如何使用 JNDI 添加新组到 ApacheDS?

标签 java ldap jndi apacheds

我试过了

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/

相关文章:

java - 我可以并且是否需要避免单例模式?

java - 是否可以自定义 JTree 节点?

java - 使用 MD5 密码连接到 LDAP

java - 从 LDAP 获取当前用户的所有组和角色

java - 如何 - 用于电子表格/任何简单文件的 Tomcat JNDI 资源?

java - JNDI InitialContext 无法在简单的 netbeans 项目中工作

Java - 如何循环具有相同名称但不同参数的方法

java - 文本字段的 CSS 编辑到语音气泡

authentication - 如何使用LDAP身份验证使用gitlab设置管理员用户?

tomcat - 在 tomcat :run 上找不到类