如何在Java代码中为ldap身份验证设置新的安全凭据

如何在Java代码中为ldap身份验证设置新的安全凭据,java,security,authentication,ldap,credentials,Java,Security,Authentication,Ldap,Credentials,Hashtable env=新的Hashtable(11)创建环境 环境放置(Context.INITIAL\u Context\u工厂, “com.sun.jndi.ldap.LdapCtxFactory”); env.put(Context.PROVIDER\u URL,“ldap://localhost:10389/ou=system");url声明 环境保护(Context.SECURITY_凭证,“机密”); 环境put(Context.SECURITY_认证,“simple”); 环

Hashtable env=新的Hashtable(11)<代码>创建环境 环境放置(Context.INITIAL\u Context\u工厂, “com.sun.jndi.ldap.LdapCtxFactory”); env.put(Context.PROVIDER\u URL,“ldap://localhost:10389/ou=system");<代码>url声明 环境保护(Context.SECURITY_凭证,“机密”); 环境put(Context.SECURITY_认证,“simple”); 环境投入(Context.SECURITY_PRINCIPAL,“ou=121,ousystem”)<代码>此为域 环境保护(Context.SECURITY_凭证,“机密”)<代码>设置新凭证 //搜索和检索DN

     DirContext ctx = null;
    NamingEnumeration results = null;
    try {
        ctx = new InitialDirContext(env);`cant create obj here`
        SearchControls controls = new SearchControls();
     // Authenticate
          ldap = new InitialLdapContext(env, null);
           } catch (AuthenticationException ae) {
     ae.printStackTrace();
      } catch (NamingException e) {
     e.printStackTrace();
 }

错误:javax.naming.NameNotFoundException:
为上下文创建obj时
您的context.SECURITY\u主体似乎不正确,它不能是OU(组织单位),而是CN、UID等。在您的情况下,它可以是CN=121,OU=ousystem。你需要检查一下

如果您有LDAP浏览器,例如Apache Directory Studio或Softera LDAP,请尝试使用连接详细信息连接到LDAP服务器