如何在Java代码中为ldap身份验证设置新的安全凭据
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如何在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”); 环
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服务器