我正在尝试使用Java对openldap服务器进行身份验证。
我尝试将我的LDAPContext SECURITY_PRINCIPAL设置为DN并且它可以正常工作。
Hashtable<Object, Object> env = new Hashtable<Object, Object>();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, ldapHost);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "cn=admin,ou=People,dc=maxcrc,dc=com");
env.put(Context.SECURITY_CREDENTIALS, password);
env.put("java.naming.ldap.attributes.binary","objectSID");
if (sslAuth) {
System.setProperty("javax.net.ssl.trustStore", sslKeyStore);
env.put(DirContext.SECURITY_PROTOCOL, "ssl");
// System.setProperty("javax.net.debug","ssl");
}
LdapContext ctx = new InitialLdapContext(env, null);
return ctx;
}
我现在正在尝试使用UserPrincipalName进行身份验证,与AD身份验证类似,它会产生INVALID DN错误。
Hashtable<Object, Object> env = new Hashtable<Object, Object>();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, ldapHost);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "admin@people.maxcrc.com");
env.put(Context.SECURITY_CREDENTIALS, password);
env.put("java.naming.ldap.attributes.binary","objectSID");
if (sslAuth) {
System.setProperty("javax.net.ssl.trustStore", sslKeyStore);
env.put(DirContext.SECURITY_PROTOCOL, "ssl");
// System.setProperty("javax.net.debug","ssl");
}
LdapContext ctx = new InitialLdapContext(env, null);
return ctx;
}
如何配置openldap设置以允许使用UPN进行身份验证