1、[LDAP: error code 34 - 00000057: LdapErr: DSID-0C090B60, comment: Error processing name, data 0, v1db1

在编辑AD域控帐号属性或密码的时候,经常会遇到这个错误;

为什么会产生这个错误?

我经过验证列举了几个错误的例子:

ldapContext.modifyAttributes(userDN, mods);//这是修改AD帐号密码的方法;

1)参数userDN如果不是这种格式(CN=张三,OU=测试,OU=**公司,DC=test,DC=com)就会报上面的错误;

2)参数userDN如果包含一些特殊符号,就会报上面的错误;

比如:userDN = CN=张三,OU=测试+研发,OU=**公司,DC=test,DC=com

userDN = CN=张三,OU=测试,研发,OU=**公司,DC=test,DC=com

userDN = CN=张三,OU=测试=研发,OU=**公司,DC=test,DC=com

上面的格式都会造成上面的错误,一定要把值进行转义才可以成功:

userDN = CN=张三,OU=测试\+研发,OU=**公司,DC=test,DC=com

userDN = CN=张三,OU=测试\,研发,OU=**公司,DC=test,DC=com

userDN = CN=张三,OU=测试\=研发,OU=**公司,DC=test,DC=com

体现代码就是:

userDN = userDN.replaceAll("\\+", "\\\\+");

userDN = userDN.replace("测试,研发", "测试\\,研发");

userDN = userDN.replace("测试,研发", "测试\\=研发");

2、[LDAP: error code 49 - 80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db1

这个错误很常见,如果你在开发过程中遇到这个错误,说明:AD认证的帐号或密码不正确;

顺便多说一些使用场景:

AD认证,帐号的格式有很多种:

如果帐号属性:

sAMAccountName = zhangsan

distinguishedName = CN=张三,OU=测试\+研发,OU=**公司,DC=test,DC=com

那么帐号认证的方式可以是:

adminUID的形式会有三种,这三种可能跟AD域控的系统版本有关系,windows2008这三种方式都是兼容的,其他的未经过测试,需要验证;

property.put(DirContext.INITIAL_CONTEXT_FACTORY, LDAPEnv_Factory);
// 拥有Domain Admins角色的用户,域管理员
// adminUID的值可以为:adminUID = CN=张三,OU=测试\+研发,OU=**公司,DC=test,DC=com
// adminUID的值可以为:adminUID = zhangsan@test.com
// adminUID的值可以为:adminUID = test\zhangsan
property.put(Context.SECURITY_PRINCIPAL, adminUID);
property.put(Context.SECURITY_CREDENTIALS, adminPass);
property.put(Context.SECURITY_AUTHENTICATION, "simple");

3、[LDAP: error code 53 - 0000001F: SvcErr: DSID-031A120C, problem 5003 (WILL_NOT_PERFORM), data 0

这个错误也很常见,出现这个错误,一般情况是编辑AD域控的帐号属性或密码失败了。

而失败的原因有以下可能:

1)通过ldapContext.modifyAttributes(userDN, mods);修改帐号密码,需要AD开通SSL协议才行(即:通过636端口进行执行),报上面的错误,是因为使用的389端口进行执行的;

体现到代码:

property.put("java.naming.authoritative", "true");
property.put("java.naming.security.protocol", "ssl");
// 如果大家需要SkipSSLSocketFactory.java,可以联系Q Q:2753538510
property.put("java.naming.ldap.factory.socket","com.***.jndi.directory.SkipSSLSocketFactory");
property.put("java.naming.provider.url", "ldaps://x.x.x.x:636");
property.setProperty("java.naming.referral", "ignore");

作为研发人员,在建立socket连接或http/https连接的时候,习惯性增加超时时间,而AD/LDAP的连接也会习惯性增加这段:

property.put("com.sun.jndi.ldap.connect.timeout", "5000");

那么增加这一行代码, 就会造成AD的SSL连接错误:

javax.naming.CommunicationException: x.x.x.x:636 [Root exception is java.net.SocketException: Unconnected sockets not implemented]

去掉上面一行,就可以了。

2)说一下如何开通AD侧的SSL协议:

windows2012 参考该链接:教程活动目录 - 通过 SSL 启用 LDAP [ 一步一步] (techexpert.tips)

windows2008的步骤如下:

1、打开:管理工具》服务器管理器

2、添加角色,勾选Active Directory 证书服务

图中我已经安装过了,因此会看到是灰色的; 注意:安装步骤跟windows 2012的稍微有一点差别;

3、安装完SSL,需要重启计算机,重启后,再次打开:管理工具》服务器管理器

可以看到目录里已经有证书服务了:

使用内置程序测试验证636端口是否正常:

Java对接AD/LDAP的常见错误,以及解决办法相关推荐

  1. php源码安装失败,php编译安装常见错误及解决办法

    php编译安装常见错误及解决办法 1.configure: error: No curses/termcap library found 网上有的说法是:–with-named-curses-libs ...

  2. VS2019运行OpenGL时出现的常见错误及解决办法

    OpenGL程序在低版本的VS中运行成功,但在VS2019中运行却出现各种错误,以下是常见错误的解决办法.(文章结尾有库的链接哟~) 问题一:无法打开文件"glaux.lib" 解 ...

  3. VLOOKUP常见错误及解决办法

    35-VLOOKUP常见错误及解决办法 2021-08-18 13:11 VLOOKUP是一个非常实用的查找函数,但在实际使用过程中,往往会出现这样那种的错误而得到不正确的结果. [这里备注下,如果你 ...

  4. MATLAB等号错误为啥,Matlab常见错误及解决办法归纳

    Matlab常见错误及解决办法归纳 1.Subscript indices must either be real positive integers or logicals 中文解释:下标索引必须是 ...

  5. php5编译安装常见错误和解决办法集锦

    最近在给开发同事折腾开发测试环境,其中就有 php 的编译安装.由于每个人的需求不一致,所以也接触到了各种模块编译和集成,中间不乏各种编译依赖报错. 正好,搜了几次都是下面 2 篇文章内容,干脆就转到 ...

  6. Oracle的常见错误及解决办法

    ORA-12528: TNS:listener: all appropriate instances are blocking new connections ORA-12528问题是因为监听中的服务 ...

  7. IIS发布ASP.NET应用常见错误及解决办法

    常见错误 配置文件错误 具体错误类型为HTTP 错误 500.19 - Internal Server Error,错误描述为由于权限不足而无法读取配置文件. 该错误的可能原因是: 如同描述所说的,由 ...

  8. SSL证书7大常见错误及解决办法!

    无论是初学者还是经验丰富的大佬,在购买和安装SSL证书时总会遇到各式各样的问题,那么在安装SSL证书都有哪些常见错误?在出现问题后该如何解决?以下是详细的内容: 错误一:域名验证失败 解决办法:请确认 ...

  9. Weblogic常见错误以及解决办法

     特殊注意事项,在eclipse下最好采用和运行weblogic一样的jdk版本进行编译,否则会出现文件访问版本不一致的bug. 1)控制台报The WebLogic Server did not s ...

最新文章

  1. RHEL5.1单域主/从NIS服务器配置及测试
  2. jquery按钮禁用(全)
  3. 7.PHP Cookie与Session
  4. Teams bot的调用限制
  5. hive mysql5.7_安装并使用mysql5.7作为hive的metastore
  6. AndroidM 内核空间到用户空间接口类型
  7. 【Java从0到架构师】Filter_Listener_AJAX
  8. android中获取应用程序(包)的信息,Android中获取应用程序(包)的信息PackageManager的使用(一).doc...
  9. 每天CookBook之Python-003
  10. 【pytorch】pytorch-LSTM
  11. 【声源定位】基于matlab广义互相关声源定位【含Matlab源码 548期】
  12. 全面了解决策管理平台
  13. NAT 内网穿透原理
  14. Juniper防火墙常用命令
  15. 连续仨月霸占牛客榜首京东T8呕心巨作:700页JVM虚拟机实战手册
  16. Android Couldn‘t find meta-data for provider with authority
  17. 云和恩墨校园招聘开始啦!
  18. Unix/Linux中的read和write函数
  19. 千锋教育python2104期总结day14
  20. go语言中goto的使用

热门文章

  1. 深度学企业linux awk命令详解与应用(下篇)
  2. 【WPS配置mathtype】
  3. Delphi基本数据类型(内置数据类型)
  4. 卡尔曼滤波MATLAB实现
  5. pyton基础语法学习笔记一
  6. Matlab R2022a安装
  7. 2009年三季度基金持股减仓表2
  8. MySQL递归查询所有下级节点
  9. java中Lambda+流式编程讲解(心得篇)
  10. 图片噪声 降噪 边缘检测