身份验证错误49 52e,java应用程序中的jndi无效令牌

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了身份验证错误49 52e,java应用程序中的jndi无效令牌相关的知识,希望对你有一定的参考价值。

如果在Java应用程序中提供的用户名和密码正确,我想问一个LDAP服务器。

我最终使用jndi和这个函数(它是我用来探索返回异常消息的LDAP的测试函数):

public static String checkCredentials(String securityPrincipal,
                               String password,
                               String ldapUrl,
                               String securityAuthentication) 
{
    String userVerify = "";
    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
    env.put(Context.PROVIDER_URL, ldapUrl);
    env.put(Context.SECURITY_AUTHENTICATION, securityAuthentication);
    env.put(Context.SECURITY_PRINCIPAL, securityPrincipal);
    env.put(Context.SECURITY_CREDENTIALS, password);

    try {
        DirContext authContext = new InitialDirContext(env);
        userVerify = testDescription + " - Success";
        authContext.close();
    } catch (AuthenticationException authEx) {
        userVerify = "AuthenticationException: " + authEx.getMessage();//"Authentication failed!";
    } catch (NamingException namEx) {
        userVerify = "NamingException: " + namEx.getMessage();//"Something went wrong!";
    } 
    return userVerify;
}

当我通过传递正确的checkCredentials(在我的情况下它是ldapUrl)调用ldap://192.168.48.60:389时,我总是得到结果(该函数返回一个String):

AuthenticationException:[LDAP:错误代码49 - 80090308:LdapErr:DSID-0C0903A8,注释:AcceptSecurityContext错误,数据52e,v1db1]

这个page说这是一个身份验证错误(49)并且“用户名有效但密码/凭证无效”(52e)。

我为securityPrincipal尝试了所有这些:

约翰

约翰@ myCompany的

CN =约翰,康涅狄格州

CN = john,OU =内部用户,DC = mycompany

passwordsecuirityAuthentication似乎被忽视了。

我尝试从http://www.ldapadmin.org/安装LDAP管理员,并从中得到:

LDAP错误!凭据无效:80090308:LdapErr:DSID-0C0903A8,注释:AcceptSecurityContext错误,数据52e,v1db1。

传递给函数的令牌无效。

不知何故,这告诉我更多“无效令牌”。

有什么指针吗?我被卡住了。

答案

在安全性中传递“无”而不是“简单”身份验证完成了这项工作。

至少没有例外,即使passowrd错误,即使UserVerifyT返回成功,我也将通过检索用户的邮件来处理这个问题,如果邮件被返回密码就可以了。

以上是关于身份验证错误49 52e,java应用程序中的jndi无效令牌的主要内容,如果未能解决你的问题,请参考以下文章

LDAP 身份验证失败:数据 52e

LDAP:错误代码 49 - 80090308:LdapErr:DSID-0C0903A9,注释:AcceptSecurityContext 错误,数据 52e,v1db1

动态 Web 项目中的谷歌日历 api (java) 身份验证错误

AES GCM 解密绕过 JAVA 中的身份验证

通过 Spring Security 的 Active Directory 身份验证返回由 LDAP 引起的有效用户的错误凭据:错误代码 49

在 Java 应用程序中使用 NTLM 身份验证