当前位置: 首页 > 知识库问答 >
问题:

无法从OpenDS活动目录中创建和获取java中的用户

仰经武
2023-03-14

dirContext ldapContext;

String baseName=“dc=MyCompany,dc=com”;

字符串serverIP=“xx.xxx.xxx.xxx”;

公共连接(){

try {

  Hashtable ldapEnv = new Hashtable(11);

  ldapEnv.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");

  ldapEnv.put(Context.PROVIDER_URL,  "ldap://xx.xx.xx.xx:389");

  ldapEnv.put(Context.SECURITY_AUTHENTICATION, "simple");

  ldapEnv.put(Context.SECURITY_PRINCIPAL, "cn=Directory Manager");

  ldapEnv.put(Context.SECURITY_CREDENTIALS, "xxxx");

  ldapContext = new InitialDirContext(ldapEnv);

  System.out.println(ldapContext);



 }
  catch (Exception e) {

    System.out.println(" bind error: " + e);

    e.printStackTrace();

    System.exit(-1);

 }

}




  public void createNew(String username, String surname, String givenName) {

    try {

      String distinguishedName = "cn=" + username + baseName;

      Attributes newAttributes = new BasicAttributes(true);

      Attribute oc = new BasicAttribute("objectclass");

      oc.add("top");

      oc.add("person");

      oc.add("organizationalperson");

      oc.add("user");

      newAttributes.put(oc);

      newAttributes.put(new BasicAttribute("sAMAccountName", username));

      newAttributes.put(new BasicAttribute("userPrincipalName", username + "@" + serverIP));

      newAttributes.put(new BasicAttribute("cn", username));

      newAttributes.put(new BasicAttribute("sn", surname));

      newAttributes.put(new BasicAttribute("givenName", givenName));

      newAttributes.put(new BasicAttribute("displayName", givenName + " " + surname));

      System.out.println("Name: " + username + " Attributes: " + newAttributes);

      ldapContext.createSubcontext(distinguishedName, newAttributes);

    }
    catch (Exception e) {

      System.out.println("create error: " + e);

      e.printStackTrace();

      System.exit(-1);

    }

  }



  public Attributes fetch(String username) {

    Attributes attributes = null;

    try {
      System.out.println("fetching: " + username);

      DirContext o = (DirContext)ldapContext.lookup("cn=" + username+ baseName);

      System.out.println("search done\n");

      attributes = o.getAttributes("");

      for (NamingEnumeration ae = attributes.getAll(); ae.hasMoreElements();) {


        Attribute attr = (Attribute)ae.next();

        String attrId = attr.getID();

        for (NamingEnumeration vals = attr.getAll(); vals.hasMore();) {

          String thing = vals.next().toString();

          System.out.println(attrId + ": " + thing);

        }
      }
    }
    catch (Exception e) {

      System.out.println(" fetch error: " + e);

      System.exit(-1);
    }
    return attributes;
  }

    public static void main(String[] args) {


    adc.createNew("user1,", "User", "user1");

    Attributes a = adc.fetch("user1,");
  }

  

在创建用户和获取用户后,我在控制台中看到以下错误。

javax。命名。目录InitialDirContext@18eb9e6

名称:user1,属性:{displayname=displayname:user1 User,givenname=givenname:user1,

对象类:顶,人,组织的人,用户,

用户名: user1, sn=sn:用户名:

user1@xx。xxx。xxx。xxx,cn=cn:user1,}

创建错误:javax。命名。NameNotFoundException:[LDAP:错误代码32-提供的条目

无法添加cn=user1,dc=MyCompany,dc=com,因为其后缀未定义为

目录服务器中的后缀];剩余名称'cn=user1,dc=MyCompany,dc=com'

javax。命名。NameNotFoundException:[LDAP:错误代码32-提供的条目

无法添加cn=user1,dc=MyCompany,dc=com,因为其后缀未定义

目录服务器中的后缀];剩余名称'cn=user1,dc=MyCompany,dc=com'

共有1个答案

裴良弼
2023-03-14

dc=mycompany,dc=com的后端是否存在?如果没有,则必须创建它,并至少填充基本对象dc=mycompany,dc=com

 类似资料:
  • 我无法创建目录,我拥有所有权限,这在我的清单中: 在MainActivity onCreate中,检查权限,如果有权限,则应创建一个目录,但始终返回false: 有什么线索或暗示吗?谢谢

  • 找到7个项目drwxr-xr-x-hbase用户0 201 4-06-25 18:58/hbase/.tmp ... 但当我运行此命令时,我会得到 yarn-site.xml Hbase配置hbase-site.xml 我可以浏览http://localhost:50070和http://localhost:8088/cluster 在hbase-marc-master-marc-pc.log中,

  • 问题内容: 我试图在该目录中创建一个新目录和一个文件。谁能告诉我我要去哪里错了? 我正在使用Windows系统,并且我希望该目录存在于我的文件所在的文件夹中。 问题答案: 基本上,正在发生的事情是,您正在创建一个名为的目录,然后尝试创建一个名为同一个东西的新文件,这显然行不通。 所以,而不是… 尝试… 额外 如果失败,实际上不会抛出任何异常,这很烦人,所以我会做更多类似的事情… 就这样我知道实际的

  • 我想在带有toast的活动上显示viewpager2中的所选项目描述。 如何从viewpager获取数据? 我可以显示项目位置,但我想用toast显示所选项目描述。 对不起,我的英语不好。 谢谢你的帮助。 我的代码如下所示; array\u str\u值: 我的适配器: PagerM:

  • 我正在使用Helm在Kubernetes集群上部署postgres。我创建了一个持久卷和一个持久卷声明: 我该怎么修好它?

  • 我正在尝试创建一个目录和文件,以便可以存储从Internet下载的文件。但是,我无法在外部公共存储中创建目录和文件。如果我写入外部私有存储(应用程序的特定存储位置),我完全可以这样做。 代码如下: 上面的代码导致: 09-13 05:33:45.258 5867-5867/? I/S。出来﹕ /存储/0CED-0F09/图片 09-13 05:33:45.260 5867-5867/? I/S。出