【问题标题】:ldap Authentication Error from java program来自java程序的ldap身份验证错误
【发布时间】:2018-02-05 16:40:50
【问题描述】:
public static void main(String[] args)
{


    // Setup environment for authenticating

    Hashtable<String, String> environment = 
        new Hashtable<String, String>();

    environment.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");

    environment.put(Context.PROVIDER_URL,"ldap://192.168.0.100:389");

    environment.put(Context.SECURITY_AUTHENTICATION,"simple");

    environment.put(Context.SECURITY_PRINCIPAL,"uid=dilip.duraiswamy,dc=xxxx,dc=local");

    environment.put(Context.SECURITY_CREDENTIALS,"xxxx");

    try
    {
        DirContext authContext = 
            new InitialDirContext(environment);

        // user is authenticated
        System.out.println("USER IS AUTHETICATED");

    }
    catch (AuthenticationException ex)
    {

        // Authentication failed
        System.out.println("AUTH FAILED : "+ex );

    }
    catch (NamingException ex)
    {
        ex.printStackTrace();
    }
}

得到错误为 javax.naming.AuthenticationException:[LDAP:错误代码 49 - 80090308:LdapErr:DSID-0C09042F,注释:AcceptSecurityContext 错误,数据 52e,v2580

【问题讨论】:

    标签: java ldap


    【解决方案1】:

    对于身份验证,添加正确的专有名称。

    如果 DN 在有空格或某些特殊字符的情况下未正确指定,通常会出现此问题。

    ​这里的 52e - 代表无效凭证

    http://www-01.ibm.com/support/docview.wss?uid=swg21290631

    【讨论】:

    • 感谢它适用于管理员用户,但不适用于普通用户,我可以知道它不适用于普通用户
    • 对于管理员我使用 CN=username,CN=Users,DC=***,DC=local
    • 对于普通用户 im 使用 CN=Dilip D,OU=IT,OU=***,OU=****,DC=****,DC=local 它无法获取数据531 错误,即 LDAP:错误代码 49 - 80090308:LdapErr:DSID-0C09042F,注释:AcceptSecurityContext 错误,数据 531,v2580
    • 检查输入的用户名是否允许登录此工作站
    猜你喜欢
    • 1970-01-01
    • 2019-02-02
    • 1970-01-01
    • 2016-05-29
    • 2022-10-13
    • 1970-01-01
    • 2012-06-27
    • 1970-01-01
    • 2016-10-03
    相关资源
    最近更新 更多