来自java程序的ldap身份验证错误
Posted
技术标签:
【中文标题】来自java程序的ldap身份验证错误【英文标题】:ldap Authentication Error from java program 【发布时间】: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
【问题讨论】:
【参考方案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 检查输入的用户名是否允许登录此工作站以上是关于来自java程序的ldap身份验证错误的主要内容,如果未能解决你的问题,请参考以下文章
Spring boot Ldap 身份验证失败,LDAP 错误代码 49 - 80090308 数据 52e
身份验证错误49 52e,java应用程序中的jndi无效令牌