JNDI:ApacheDS:INVALID_CREDENTIALS:DIGEST-MD5:摘要响应格式违规。 URI不匹配:ldap / localhost;期待:ldap / ldap.example.com

时间:2016-05-04 11:19:57

标签: jndi apacheds

我正在尝试使用JNDI验证用户,安全级别为SASL。以下是我的示例代码。

import java.util.Hashtable;

import javax.naming.Context;
import javax.naming.NamingException;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;

public class Test {
    private static final String CONTEXT_FACTORY = "com.sun.jndi.ldap.LdapCtxFactory";
    private static final String PROVIDER_URL = "ldap://localhost:10389";
    private static final String SECURITY_AUTHENTICATION = "DIGEST-MD5";

    public static void main(String[] args) throws NamingException {
        Hashtable<String, String> env = new Hashtable<String, String>(11);

        env.put(Context.INITIAL_CONTEXT_FACTORY, CONTEXT_FACTORY);
        env.put(Context.PROVIDER_URL, PROVIDER_URL);
        env.put(Context.SECURITY_AUTHENTICATION, SECURITY_AUTHENTICATION);
        env.put(Context.SECURITY_PRINCIPAL,
                "cn=Krishna,ou=people,dc=example,dc=com");
        env.put(Context.SECURITY_CREDENTIALS, "password123");

        try {
            DirContext ctx = new InitialDirContext(env);
            System.out.println("Authentication Successful");
            ctx.close();
        } catch (NamingException e) {
            System.out.println("Authentication Failed");
            e.printStackTrace();
        }

    }
}

我在目录中使用MD5算法加密密码。当我试图运行上面的程序时,我收到了以下错误。

身份验证失败

javax.naming.AuthenticationException: [LDAP: error code 49 - INVALID_CREDENTIALS: DIGEST-MD5: digest response format violation. Mismatched URI: ldap/localhost; expecting: ldap/ldap.example.com]
    at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3135)
    at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:3081)
    at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2883)
    at com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2797)
    at com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:319)
    at com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(LdapCtxFactory.java:192)
    at com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(LdapCtxFactory.java:210)
    at com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(LdapCtxFactory.java:153)
    at com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.java:83)
    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:684)
    at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313)
    at javax.naming.InitialContext.init(InitialContext.java:244)
    at javax.naming.InitialContext.<init>(InitialContext.java:216)
    at javax.naming.directory.InitialDirContext.<init>(InitialDirContext.java:101)
    at jndi_tutorial.Test.main(Test.java:26)

但是当我尝试使用简单机制进行身份验证(SECURITY_AUTHENTICATION =“simple”)时,我的身份验证成功。我缺少任何配置吗?

0 个答案:

没有答案