zoukankan      html  css  js  c++  java
  • JAVA 操作 LDAP AD域修改密码报错及解决问题记录 simple bind failed:IP:PORT

    第一次接触ad域操作,搞了一天。终于完成。感谢以下博客主的知识分享。

    主要遇到的问题:

    simple bind failed:IP:PORT

    connect  reset 等。 

     主要解决指导为:

    1. 修改AD的 init 方法初始化 InitialLdapContext 时使用的账号密码,必须是AD域的管理员账号密码。

         如果不是管理员账号,会报53 的错。

    2. JAVA 修改AD密码必须是要用证书的。

    3. 证书中的【颁发给/ 使用者】 必须是 AD域服务器那台机器的域名。如下第3点博客内容。

      如果这名不对,即使有证书,也是连不上ad服务器的, 报 connect reset 的错。或者其他错误

    主要参考:

    1. 测试登陆认证。

    Java使用AD域认证用户_酱油能码丁-CSDN博客

    https://blog.csdn.net/martinwangjun/article/details/79729749?utm_source=blogxgwz2

    2. 测试修改AD密码。

    记一次java实现修改windows AD域的密码_lx318的博客-CSDN博客

    https://blog.csdn.net/lx318/article/details/90199569

    AD域证书申请,导入Java密钥库,实现ldap修改AD用户密码_寒沨的博客-CSDN博客

    https://blog.csdn.net/hc1017/article/details/81293323

    3. Java采用SSL连接AD域连接出错问题simple bind failed:IP:PORT解决方案

    https://blog.csdn.net/hct368/article/details/97247258

    4. 报错信息参考: 

    private static String getERR(Exception e) {
    /*
    *
    * 根据ldap返回码判断错误原因并返回
    *
    */

    if (e.toString().indexOf("LDAP: error code") > 0) {

    // 得到ldap返回的错误吗

    String errorMsg = e.toString();

    int startNum = errorMsg.toString().indexOf("LDAP: error code") + 17;

    errorMsg = errorMsg.substring(startNum, startNum + 19);

    int endNum = errorMsg.toString().indexOf(" - ");

    errorMsg = errorMsg.substring(0, endNum);

    if ("49".equals(errorMsg)) {

    errorMsg = "域控管理员账户/密码错误";

    } else if ("32".equals(errorMsg) || "34".equals(errorMsg)) {

    errorMsg = "域内账户错误";

    } else if ("10".equals(errorMsg)) {

    errorMsg = "dc错误";

    } else {

    errorMsg = "修改失败,错误吗:" + errorMsg;

    e.printStackTrace();

    }

    System.out.println("Problem resetting password(ldap):" + errorMsg);

    return errorMsg;

    } else {

    if (e.toString().indexOf(

    "algorithm: Default, provider: SunJSSE, class: sun.security.ssl.SSLContextImpl$DefaultSSLContext") > 0) {

    System.out.println("Problem resetting password(ldap):" + "证书无效/证书密码错误");

    return "修改失败,证书无效/证书密码错误";

    }

    if (e.toString().indexOf(

    "the trustAnchors parameter must be non-empty") > 0) {

    System.out.println("Problem resetting password(ldap):" + "证书不存在");

    return "修改失败,证书不存在";

    }

    e.printStackTrace();

    return "修改失败!";

    }
    }

    5. 

    LDAP 中DN、CN、DC的含义

    转自: https://blog.csdn.net/a118170653/article/details/43449331

    很多人虽然会使用dsadd等命令添加用户,但是dsadd的命令说明里面并没有涉及到dc,cn,ou的含义,很多人都不明白,这里是微软的技术支持人 员的回信,希望对大家有帮助。 

    CN, OU, DC 都是 LDAP 连接服务器的端字符串中的区别名称(DN, distinguished   name) 

    LDAP连接服务器的连接字串格式为:ldap://servername/DN   

    其中DN有三个属性,分别是CN,OU,DC   

    LDAP是一种通讯协议,如同HTTP是一种协议一样的! 

    在 LDAP 目录中,

    • DC (Domain Component)
    • CN (Common Name)
    • OU (Organizational Unit)



    LDAP 目录类似于文件系统目录。 
    下列目录: 
    DC=redmond,DC=wa,DC=microsoft,DC=com       

    如果我们类比文件系统的话,可被看作如下文件路径:    
    Com/Microsoft/Wa/Redmond   

    例如:CN=test,OU=developer,DC=domainname,DC=com 
    在上面的代码中 cn=test 可能代表一个用户名,ou=developer 代表一个 active directory 中的组织单位。这句话的含义可能就是说明 test 这个对象处在domainname.com 域的 developer 组织单元中

  • 相关阅读:
    SDUT OJ 河床
    BZOJ 1500: [NOI2005]维修数列( splay )
    BZOJ 2049: [Sdoi2008]Cave 洞穴勘测( LCT )
    BZOJ 3401: [Usaco2009 Mar]Look Up 仰望( 单调栈 )
    BZOJ 1552: [Cerc2007]robotic sort( splay )
    BZOJ 1251: 序列终结者( splay )
    BZOJ 1576: [Usaco2009 Jan]安全路经Travel( 树链剖分 )
    BZOJ 3408: [Usaco2009 Oct]Heat Wave 热浪( 最短路 )
    BZOJ 3403: [Usaco2009 Open]Cow Line 直线上的牛( deque )
    BZOJ 3407: [Usaco2009 Oct]Bessie's Weight Problem 贝茜的体重问题( dp )
  • 原文地址:https://www.cnblogs.com/java2sap/p/12174504.html
Copyright © 2011-2022 走看看