Java中的LDAP身份验证

时间:2016-06-03 10:41:16

标签: spring authentication ldap

我需要连接到LDAP服务器,但是我收到以下错误:

javax.naming.AuthenticationException:[LDAP:错误代码49 - 80090308:LdapErr:DSID-0C090334,评论:AcceptSecurityContext错误,数据525,vece

用户名和密码是正确的,我试图设置相同的用户并传入另一个用.NET编写的应用程序,它在那里工作,但在Java中我收到错误消息。

我的代码是:

@RequestMapping(method = RequestMethod.GET) public ModelAndView登录(ModelMap模型){

    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
    env.put(Context.PROVIDER_URL, "ldap://subdomain.domain.com:389");
    env.put(Context.SECURITY_PRINCIPAL, "uid=username,DC=subdomain,DC=domain,DC=com");
    env.put(Context.SECURITY_CREDENTIALS, "password");


    InitialDirContext context;

    try 
    {
        context = new InitialDirContext(env);
    } 

    catch (NamingException e1) 
    {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

我会问有工作代码的人在这里发帖。

谢谢!

2 个答案:

答案 0 :(得分:0)

  1. Active Directory不适用于UID
  2. 不要提供DN作为用户名,而是提供用于记录它的常规用户主要名称。

答案 1 :(得分:0)

如果DN is correct

,DN将正常工作

错误代码49 - ...数据525表示LDAP_NO_SUCH_OBJECT(条目不存在。)

我怀疑" uid =用户名,DC =子域名,DC =域名,DC = com"是一个很好的DN。