⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ldap.htm

📁 Java-validate AD NT account
💻 HTM
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>JAVA使用LDAP修改windows Active Directory 域用户密码</title>
</head>

<body>

<table>
  <tr>
    <td>
      <table cellSpacing="0" cellPadding="0" width="100%" bgColor="#ffffff" border="0">
        <tbody>
          <tr>
            <td class="title1" align="middle" width="100%" bgColor="#eeeeee" colSpan="3" height="40"><b>JAVA使用LDAP修改windows&nbsp;Active&nbsp;Directory&nbsp;域用户密码</b></td>
          </tr>
          <tr>
            <td align="middle" width="100%" bgColor="#eeeeee"><a href="mailto:moaihe1111@163.ocm">liaowufeng</a> 
              原创&nbsp;&nbsp;&nbsp;更新:2005-12-12 13:53:38&nbsp;&nbsp;版本: 
              1.0 &nbsp;&nbsp;</td>
          </tr>
        </tbody>
      </table>
    </td>
  </tr>
  <!-- end of article title -->
  <tr>
    <td vAlign="top" align="middle" width="100%"><!--start of article content -->
      <table class="rtable" width="98%" border="0">
        <tbody>
          <tr>
            <td class="text" align="left" width="100%"><br>
              <h3>JAVA使用LDAP修改windows&nbsp;Active&nbsp;Directory&nbsp;域用户密码</h3>
              <br>
              <h5><b>作者:廖武锋</b></h5>
              <br>
              <h5>MSN:liaowufeng1111@hotmail.com</h5>
              <br>
              <h5>QQ:&nbsp;38773367</h5>
              <br>
              <h5>email:&nbsp;moaihe1111@163.com</h5>
              <br>
              本人为作者原创,若转贴,请保留作者署名,谢谢!<br>
              1&nbsp;注意:<br>
              1.&nbsp;LDAP&nbsp;无法获取windows&nbsp;Active&nbsp;Directory&nbsp;用户密码<br>
              2.&nbsp;系统管理员可以修改其他用户的密码(不需要知道原来的旧密码),或者用户可以修改自己的密码(用户必须知道自己的密码)。这些密码修改操作必须通过一个安全通道来执行,象SSL、TLS、Kerberos。<br>
              3.&nbsp;Windows&nbsp;2000&nbsp;域控制器不支持TLS协议。但是Windows&nbsp;2000&nbsp;和&nbsp;Windows&nbsp;Server&nbsp;2003&nbsp;域控制器都支持SSL。对基于SSL或TLS的会话,你的工作站(或指定的JRE)必须信任域控制器认证中心发布的CA证书。<br>
              <br>
              相关资料可到<a class="l2" href="http://" target="_blank">www.ldapchina.com</a>网站在看<br>
              <br>
              具体步骤如下:<br>
              环境要求:<br>
              一台安装Active&nbsp;Directory&nbsp;的服务器,域名为security.boco<br>
              一台安装证书服务(需安装企业根证书)的服务器,此服务器加入security域中<br>
              一台安装JAVA应用的服务器,此服务器不需要加入security域中<br>
              安装步骤:<br>
              1&nbsp;安装Active&nbsp;Directory&nbsp;域控制器<br>
              2&nbsp;安装证书服务<br>
              3&nbsp;以域用户登录到安装了证书服务的服务器中,导出域根证书和计算机证书<br>
              &nbsp;&nbsp;第一步:进入MMC控制台,添加证书,选择本地计算机<br>
              <br>
              <img src="LDAP/Snap21.JPG" width="800" height="600"><br>
              进入MMC&nbsp;控制台<br>
              <br>
              <img src="LDAP/Snap22.JPG" width="800" height="600"><br>
              <br>
              添加证书管理单元,选择本地计算机<br>
              <br>
              <br>
              &nbsp;&nbsp;第二步展开刚增加的证书节点,选择证书&#61664;个人-&gt;证书,选择CA证书,导出<br>
              <br>
              <img src="LDAP/Snap23.JPG" width="800" height="600"><br>
              <br>
              &nbsp;&nbsp;第三步展开证书节点,选择证书&#61664;个人&#61664;证书&nbsp;,右击所有任务,申请新证书,证书类型选择计算机类型<br>
              <br>
              <img src="LDAP/Snap24.JPG" width="800" height="600"><br>
              <br>
              <br>
              <img src="LDAP/Snap25.JPG" width="800" height="600"><br>
              <br>
              <br>
              4&nbsp;将从证书中导出的两个证书文件,*.cer&nbsp;使用java的keytool工具创建或导入证书库文件中<br>
              <br>
              <br>
              导入CA证书<br>
              D:\Borland\jdk142_05\bin&gt;keytool&nbsp;-import&nbsp;-keystore&nbsp;security51.keystore&nbsp;-file&nbsp;51A<br>
              Droot.cer<br>
              输入keystore密码:&nbsp;&nbsp;lwfmah<br>
              Owner:&nbsp;CN=securityCA,&nbsp;DC=security,&nbsp;DC=boco<br>
              发照者:&nbsp;CN=securityCA,&nbsp;DC=security,&nbsp;DC=boco<br>
              序号:&nbsp;72880fb3005cd7a54efa9c224241008b<br>
              有效期间:&nbsp;Thu&nbsp;Nov&nbsp;10&nbsp;20:48:49&nbsp;CST&nbsp;2005&nbsp;至:&nbsp;Tue&nbsp;Nov&nbsp;10&nbsp;20:55:33&nbsp;CST&nbsp;2015<br>
              认证指纹:<br>
              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MD5:&nbsp;&nbsp;51:3F:C3:B1:C3:A6:EF:24:55:70:2A:25:0D:EB:57:59<br>
              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SHA1:&nbsp;B3:EE:CC:92:E3:D4:87:48:D4:1D:F3:53:5B:0E:99:E1:B7:0F:27:20<br>
              信任这个认证?&nbsp;[否]:&nbsp;&nbsp;y<br>
              认证已添加至keystore中<br>
              <br>
              导入申请的计算机证书<br>
              D:\Borland\jdk142_05\bin&gt;keytool&nbsp;-import&nbsp;-keystore&nbsp;security51.keystore&nbsp;-alias&nbsp;co<br>
              mkey&nbsp;-file&nbsp;51AD.cer<br>
              输入keystore密码:&nbsp;&nbsp;lwfmah<br>
              认证已添加至keystore中<br>
              <br>
              5&nbsp;编写如下代码修改Active&nbsp;Direcotry&nbsp;域用户密码<br>
              <br>
              &nbsp;
              <div class="codeStyle">
                <ol>
                  <li> 
                  <li><b><font color="#0000ff">public</font></b>&nbsp;<b><font color="#0000ff">static</font></b>&nbsp;<b><font color="#0000ff">void</font></b>&nbsp;main(<b><a href="http://www.javaresearch.org/source/jdk142/java/lang/String.java.html" target="_blank"><font class="classLink"><u>String</u></font></a></b>[]&nbsp;args)&nbsp;<b><font color="#0000ff">throws</font></b>&nbsp;<font color="#ff0000">UnknownHostException</font>,
                  <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff0000">IOException</font>&nbsp;{
                  <li><i><font color="#339900">//&nbsp;java.net.Socket&nbsp;sock&nbsp;=&nbsp;new&nbsp;java.net.Socket(&quot;10.110.180.50&quot;,636);</font></i>
                  <li><i><font color="#339900">//&nbsp;boolean&nbsp;b&nbsp;=&nbsp;sock.isConnected();</font></i>
                  <li>&nbsp;&nbsp;<font color="#ff0000">Hashtable</font>&nbsp;env&nbsp;=&nbsp;<b><font color="#0000ff">new</font></b>&nbsp;<font color="#ff0000">Hashtable</font>();
                  <li>&nbsp;&nbsp;<b><a href="http://www.javaresearch.org/source/jdk142/java/lang/String.java.html" target="_blank"><font class="classLink"><u>String</u></font></a></b>&nbsp;adminName&nbsp;=&nbsp;<font color="#ff33ff">&quot;cn=administrator,cn=users,DC=security,DC=boco&quot;</font>;
                  <li>&nbsp;&nbsp;<b><a href="http://www.javaresearch.org/source/jdk142/java/lang/String.java.html" target="_blank"><font class="classLink"><u>String</u></font></a></b>&nbsp;adminpassword&nbsp;=&nbsp;<font color="#ff33ff">&quot;123456789&quot;</font>;
                  <li>&nbsp;&nbsp;<b><a href="http://www.javaresearch.org/source/jdk142/java/lang/String.java.html" target="_blank"><font class="classLink"><u>String</u></font></a></b>&nbsp;userName&nbsp;=&nbsp;<font color="#ff33ff">&quot;CN=iam_lwf_count,OU=网管中心,DC=security,DC=boco&quot;</font>;
                  <li>&nbsp;<i><font color="#339900">//&nbsp;old&nbsp;password&nbsp;Ab123456</font></i>
                  <li>&nbsp;&nbsp;<b><a href="http://www.javaresearch.org/source/jdk142/java/lang/String.java.html" target="_blank"><font class="classLink"><u>String</u></font></a></b>&nbsp;newPassword&nbsp;=&nbsp;<font color="#ff33ff">&quot;liaowufeng&quot;</font>;
                  <li>&nbsp;&nbsp;<b><a href="http://www.javaresearch.org/source/jdk142/java/lang/String.java.html" target="_blank"><font class="classLink"><u>String</u></font></a></b>&nbsp;keystore&nbsp;=&nbsp;<font color="#ff33ff">&quot;D:/Borland/jdk142_05/bin/security51.keystore&quot;</font>;
                  <li>&nbsp;<i><font color="#339900">//&nbsp;&nbsp;String&nbsp;keystore&nbsp;=&nbsp;&quot;E:/project/iam/testADlhj.keystore&quot;;</font></i>
                  <li><b><a href="http://www.javaresearch.org/source/jdk142/java/lang/System.java.html" target="_blank"><font class="classLink"><u>System</u></font></a></b>.setProperty(<font color="#ff33ff">&quot;javax.net.ssl.trustStore&quot;</font>,&nbsp;keystore);
                  <li>&nbsp;&nbsp;<b><a href="http://www.javaresearch.org/source/jdk142/java/lang/System.java.html" target="_blank"><font class="classLink"><u>System</u></font></a></b>.setProperty(<font color="#ff33ff">&quot;javax.net.ssl.trustStorePassword&quot;</font>,&nbsp;<font color="#ff33ff">&quot;lwfmah&quot;</font>);
                  <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;env.put(<font color="#ff0000">Context</font>.INITIAL_CONTEXT_FACTORY,<font color="#ff33ff">&quot;com.sun.jndi.ldap.LdapCtxFactory&quot;</font>);
                  <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;env.put(<font color="#ff0000">Context</font>.SECURITY_AUTHENTICATION,&nbsp;<font color="#ff33ff">&quot;simple&quot;</font>);
                  <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;env.put(<font color="#ff0000">Context</font>.SECURITY_PRINCIPAL,&nbsp;adminName);
                  <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;env.put(<font color="#ff0000">Context</font>.SECURITY_CREDENTIALS,&nbsp;adminpassword);
                  <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;env.put(<font color="#ff0000">Context</font>.SECURITY_PROTOCOL,&nbsp;<font color="#ff33ff">&quot;ssl&quot;</font>);
                  <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><a href="http://www.javaresearch.org/source/jdk142/java/lang/String.java.html" target="_blank"><font class="classLink"><u>String</u></font></a></b>&nbsp;ldapURL&nbsp;=&nbsp;<font color="#ff33ff">&quot;ldaps://10.110.180.50:636&quot;</font>;
                  <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;env.put(<font color="#ff0000">Context</font>.PROVIDER_URL,&nbsp;ldapURL);
                  <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><font color="#0000ff">try</font></b>&nbsp;{
                  <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff0000">LdapContext</font>&nbsp;ctx&nbsp;=&nbsp;<b><font color="#0000ff">new</font></b>&nbsp;<font color="#ff0000">InitialLdapContext</font>(env,&nbsp;<b><font color="#0000ff">null</font></b>);
                  <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff0000">ModificationItem</font>[]&nbsp;mods&nbsp;=&nbsp;<b><font color="#0000ff">new</font></b>&nbsp;<font color="#ff0000">ModificationItem</font>[1];
                  <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><a href="http://www.javaresearch.org/source/jdk142/java/lang/String.java.html" target="_blank"><font class="classLink"><u>String</u></font></a></b>&nbsp;newQuotedPassword&nbsp;=&nbsp;<font color="#ff33ff">&quot;\&quot;&quot;</font>&nbsp;+&nbsp;newPassword&nbsp;+&nbsp;<font color="#ff33ff">&quot;\&quot;&quot;</font>;
                  <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><font color="#0000ff">byte</font></b>[]&nbsp;newUnicodePassword&nbsp;=&nbsp;newQuotedPassword.getBytes(<font color="#ff33ff">&quot;UTF-16LE&quot;</font>);
                  <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mods[0]&nbsp;=&nbsp;<b><font color="#0000ff">new</font></b>&nbsp;<font color="#ff0000">ModificationItem</font>(<font color="#ff0000">DirContext</font>.REPLACE_ATTRIBUTE,<b><font color="#0000ff">new</font></b>&nbsp;<font color="#ff0000">BasicAttribute</font>(<font color="#ff33ff">&quot;unicodePwd&quot;</font>,newUnicodePassword));
                  <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ctx.modifyAttributes(userName,&nbsp;mods);
                  <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><a href="http://www.javaresearch.org/source/jdk142/java/lang/System.java.html" target="_blank"><font class="classLink"><u>System</u></font></a></b>.out.println(<font color="#ff33ff">&quot;Reset&nbsp;Password&nbsp;for:&nbsp;&quot;</font>&nbsp;+&nbsp;userName);
                  <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ctx.close();
                  <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><a href="http://www.javaresearch.org/source/jdk142/java/lang/System.java.html" target="_blank"><font class="classLink"><u>System</u></font></a></b>.out.println(<font color="#ff33ff">&quot;Problem&nbsp;encoding&nbsp;password222:&nbsp;&quot;</font>);
                  <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<b><font color="#0000ff">catch</font></b>&nbsp;(<b><a href="http://www.javaresearch.org/source/jdk142/java/lang/Exception.java.html" target="_blank"><font class="classLink"><u>Exception</u></font></a></b>&nbsp;e)&nbsp;{
                  <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();
                  <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><a href="http://www.javaresearch.org/source/jdk142/java/lang/System.java.html" target="_blank"><font class="classLink"><u>System</u></font></a></b>.out.println(<font color="#ff33ff">&quot;Problem&nbsp;encoding&nbsp;password222:&nbsp;&quot;</font>&nbsp;+&nbsp;e);
                  <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
                  <li>}</li>
                </ol>
              </div>
            </td>
          </tr>
        </tbody>
      </table>
    </td>
  </tr>
</table>

</body>

</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -