【问题标题】:LDAP: error code 49 - 80090308: LdapErr: DSID-0C09042F, comment: AcceptSecurityContext error, data 52e, v2580LDAP:错误代码 49 - 80090308:LdapErr:DSID-0C09042F,注释:AcceptSecurityContext 错误,数据 52e,v2580
【发布时间】:2019-10-13 00:18:16
【问题描述】:
LDAP: error code 49 - 80090308: LdapErr: DSID-0C09042F, comment: AcceptSecurityContext error, data 52e, v2580

我知道“52e”代码是用户名有效但密码无效的情况。我使用相同的用户名和密码来针对 Active Directory 验证用户及其工作正常。

这是我的java代码:

        String userName = "user_test";
        String password =  "*******";
        String base ="DC=test,DC=local";
        String dn = "cn="+ userName + "," + "CN=Users," + base;  

        try {
            Hashtable env = new Hashtable();
            env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
            env.put(Context.SECURITY_AUTHENTICATION, "simple");

            env.put(Context.SECURITY_PRINCIPAL, dn);

            env.put(Context.SECURITY_CREDENTIALS, password);

            env.put(Context.PROVIDER_URL, "ldap://*****.test.local:389");


            System.out.println("Attempting to Connect...");

            ctx = new InitialLdapContext(env, null);
            System.out.println("Connection Successful.");
        } catch (NamingException nex) {
            System.out.println("LDAP Connection: FAILED");
            nex.printStackTrace();
        }
        return ctx;
    }

我不知道为什么会出现这个错误。有人可以帮忙吗?

【问题讨论】:

标签: java authentication ldap


【解决方案1】:

如果你使用简单的权限认证,你应该使用短用户名形式

user_test@test.local

我检查了,在这种情况下,身份验证正在工作。在 dn 形式中,我得到了完全相同的错误

javax.naming.AuthenticationException: [LDAP: error code 49 - 80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db1

你也可以参考之前的帖子LDAP: error code 49 - 80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db1

【讨论】:

  • 现在我在使用 dn 作为user_test@test.local 之后得到javax.naming.PartialResultException: Unprocessed Continuation Reference(s); remaining name 'DC=test,DC=local'。请帮我 。谢谢@Alister
  • 看,你应该把用户名放入哈希表中,不带 dn 部分:env.put(Context.SECURITY_PRINCIPAL, "user_test@test.local");
  • 是的,我放的是同样的,现在不使用 dn。甚至得到同样的错误。请帮助我..谢谢@Alister
  • 用当前代码替换您问题中的原始代码。如果您使用 dn 作为 user_test@test.local,我看不到您如何收到文本“javax.naming.PartialResultException:未处理的继续引用;剩余名称'DC = test,DC = local'”的错误没有在代码中的任何地方使用 DN。
  • NamingEnumeration answer = ctx.search("DC=test,DC=local", "sAMAccountName=user_test@test.local", 约束); - 在这里出错。请检查。谢谢@Alister
【解决方案2】:
猜你喜欢
  • 2015-10-03
  • 2014-04-02
  • 1970-01-01
  • 1970-01-01
  • 2018-02-22
  • 2018-11-11
  • 1970-01-01
  • 2019-03-17
相关资源
最近更新 更多