如何使用upn而不是DN来进行openLdap身份验证

时间:2016-01-21 02:39:00

标签: java authentication active-directory openldap

我正在尝试使用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进行身份验证

0 个答案:

没有答案