日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JAVA通过SSL证书创建MS AD账户及设置密码

發(fā)布時間:2025/3/8 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA通过SSL证书创建MS AD账户及设置密码 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

近期由于工作需要整理一下自動化的東西,因為公司去年上線了OA,所以公司的入職系統(tǒng)會提交用戶的信息到IT部門,最早的做法是入職到了,IT部門收集用戶信息在AD中創(chuàng)建對應的用戶信息,所以為了提高管理員的工作效率,所以準備實施自動創(chuàng)建AD賬戶,當OA流程到IT人員審批節(jié)點后,IT人員審批后根據(jù)人員信息自動創(chuàng)建AD賬戶,所以整理了一些JAVA創(chuàng)建AD人員信息的信息,但是我們需要注意點的是,對于JAVA語言操作MS AD的一些普通操作是不需要SSL的,但是對于用戶密碼的重置操作必須使用SSL,當然之前看網(wǎng)上有說可以跳過的,但是沒有試驗成功,所以還是按照標準的配置來通過SSL對用戶的AD密碼進行操作,廢話不多說了,今天我們主要介紹使用JAVA通過SSL方式創(chuàng)建MS AD賬戶,因為要對創(chuàng)建的用戶設置密碼,所以需要使用SSL證書,既然需要SSL證書,目的就是為了讓JAVA信任LDAP,所以我們需要從AD中導出受信任的證書,然后導入到JAVA運行環(huán)境中的JRE下的cacert證書文件中。我們既然說到了OA,其實OA中就可以通過系統(tǒng)自帶的功能進行證書申請及證書導入,這樣比較簡單;當然如果沒有OA環(huán)境的,我們可以通過JAVA運行環(huán)境中的JDK中的keytool進行證書導入工作,我們下面都會介紹到;

我們首先使用OA中的功能進行證書導入;我們OA中的證書路勁在/OAFS/WEAVER/jdk1.8.0_101/jre/lib/security/cacerts

確認OA環(huán)境中的JDK路勁后,我們接下來就是證書申請及導入了;

我們訪問OA的地址,然后路勁增加/integration/ldapcert.jsp路勁訪問即可;如果沒有后面的JAVA文件可以找OA供應商要;或者在附件下載;

我們首先下載附件中的文件,下載后,附件中有三個文件;classbean、

我們首先進入classbean文件夾內(nèi)的內(nèi)容拷貝到對應的OA服務器的對應目錄;

ecology\classbean\weaver\ldap

2.然后將解壓文件中的文件夾integration文件中的以下文件拷貝到OA的對應的服務器目錄下:

ecology\integration

3.因為解壓后有三個文件夾,第三個文件夾src為源碼,我們就不用管了

按照以上方法走完后,我們就可以通過以下鏈接來配置了

http://192.168.6.101/integration/ldapcert.jsp

訪問后,我們再LDAP IP輸入環(huán)境的AD DC服務器地址,系統(tǒng)會默認填寫LDAP端口636,及證書路勁,這些信息系統(tǒng)會自動補全;我們需要手動設置證書密碼,一般我們都會設置成changeit,設置好這些信息后,我們導入證書,會提示下面的導入信息;

導入完成

然后我們需要在證書路勁下載證書到本地的JRE環(huán)境進行測試了

接著我們看看第二種方式的證書申請;

我們需要從DC上導入域的根證書

mmc---增加---證書---計算機---個人---選擇根證書----導出

不需要導出私鑰

使用默認的DRE編碼

保存

我們按照同樣的方式,將另外一張也導出來

然后我們需要在本地的JDK環(huán)境中導入該根證書到JDK環(huán)境中的證書中;

我本地的JDK環(huán)境路勁D:\Development_Environment\java\jdk\jre\lib\security

然后運行命令將剛才導出的根證書導入到該路勁的cacert證書文件中;

我們首先要cd到jdk路勁

1 cd?D:\Development_Environment\java\jdk\jre\bin

然后將剛才導出的根證書保存到D盤下,通過以下命令導入

1 keytool?keytool?-import?-keystore????D:\Development_Environment\java\jdk\jre\lib\security\cacerts?-storepass?changeit?-keypass?changeit?-alias?CA?-file?d:\ADroot.cer

輸入Y受信任

然后我們就可以通過

接著就是看看ADDS環(huán)境了

換進準備好,我們就可以上代碼了;

我們設置好證書路勁,及LDAP驗證信息,及需要注冊的用戶名

賬戶注冊成功

上代碼:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 package?com.ixmsoft.oa.util;??? ??? import?java.util.Properties;??? ??? import?javax.naming.*;??? import?javax.naming.ldap.*;??? import?javax.naming.directory.*;??? ??? /**?? ?*?@author?Keven?Chen?? ?*?@version?$Revision?1.0?$?? ?*??? ?*/?? public?class?AddAdUser?{??? ????private?static?final?String?SUN_JNDI_PROVIDER?=?"com.sun.jndi.ldap.LdapCtxFactory";??? ??? ????public?static?void?main(String[]?args)?throws?Exception?{??? ????????String?keystore?=?"D:\\Development_Environment\\java\\jdk\\jre\\lib\\security\\cacerts";??? ????????System.setProperty("javax.net.ssl.trustStore",?keystore);??? ??? ????????Properties?env?=?new?Properties();??? ??? ????????env.put(Context.INITIAL_CONTEXT_FACTORY,?SUN_JNDI_PROVIDER);//?java.naming.factory.initial??? ????????env.put(Context.PROVIDER_URL,?"ldap://192.168.5.20:636");//?java.naming.provider.url??? ????????env.put(Context.SECURITY_AUTHENTICATION,?"simple");//?java.naming.security.authentication??? ????????env.put(Context.SECURITY_PRINCIPAL,??? ????????????????"cn=Administrator,cn=Users,dc=ixmsoft,dc=com");//?java.naming.security.principal??? ????????env.put(Context.SECURITY_CREDENTIALS,?"123");//?java.naming.security.credentials??? ????????env.put(Context.SECURITY_PROTOCOL,?"ssl");??? ??? ????????String?userName?=?"CN=gaowenlong,OU=IXM?Adm,OU=IMXSOFT?Users,DC=ixmsoft,DC=com";??? ????????String?groupName?=?"CN=Domain?Admins,CN=Users,DC=ixmsoft,DC=com";??? ??? ????????LdapContext?ctx?=?new?InitialLdapContext(env,?null);??? ??? ????????//?Create?attributes?to?be?associated?with?the?new?user??? ????????Attributes?attrs?=?new?BasicAttributes(true);??? ??? ????????//?These?are?the?mandatory?attributes?for?a?user?object??? ????????//?Note?that?Win2K3?will?automagically?create?a?random??? ????????//?samAccountName?if?it?is?not?present.?(Win2K?does?not)??? ????????attrs.put("objectClass",?"user");??? ????????attrs.put("sAMAccountName",?"gaowenlong");??? ????????attrs.put("cn",?"gaowenlong");??? ??? ????????//?These?are?some?optional?(but?useful)?attributes??? ????????attrs.put("sn",?"gaowenlong");??? ????????attrs.put("displayName",?"gaowenlong");??? ????????attrs.put("description",?"gaowenlong");??? ????????attrs.put("userPrincipalName",?"gaowenlong@ixmsoft.com");??? ????????attrs.put("mail",?"gaowenlong@ixmsoft.com");??? ????????attrs.put("telephoneNumber",?"1234568999");??? ??? ????????//?some?useful?constants?from?lmaccess.h??? ????????int?UF_ACCOUNTDISABLE?=?0x0002;??//禁用賬戶? ????????int?UF_PASSWD_NOTREQD?=?0x0020;???//用戶不能修改密碼 ????????int?UF_PASSWD_CANT_CHANGE?=?0x0040;??? ????????int?UF_NORMAL_ACCOUNT?=?0x0200;???//正常用戶 ????????int?UF_DONT_EXPIRE_PASSWD?=?0x10000;???//密碼永不過期 ????????int?UF_PASSWORD_EXPIRED?=?0x800000;???//密碼已經(jīng)過期 ??? ????????//?Note?that?you?need?to?create?the?user?object?before?you?can??? ????????//?set?the?password.?Therefore?as?the?user?is?created?with?no??? ????????//?password,?user?AccountControl?must?be?set?to?the?following??? ????????//?otherwise?the?Win2K3?password?filter?will?return?error?53??? ????????//?unwilling?to?perform.??? ??? ????????attrs.put("userAccountControl",?Integer.toString(UF_NORMAL_ACCOUNT??? ????????????????+?UF_PASSWD_NOTREQD?+?UF_PASSWORD_EXPIRED?+?UF_ACCOUNTDISABLE));??? ??? ????????//?Create?the?context??? ????????Context?result?=?ctx.createSubcontext(userName,?attrs);??? ????????System.out.println("Created?disabled?account?for:?"?+?userName);??? ??? ????????ModificationItem[]?mods?=?new?ModificationItem[2];??? ??? ????????//?Replace?the?"unicdodePwd"?attribute?with?a?new?value??? ????????//?Password?must?be?both?Unicode?and?a?quoted?string??? ????????String?newQuotedPassword?=?"\"Password2000\"";??? ????????byte[]?newUnicodePassword?=?newQuotedPassword.getBytes("UTF-16LE");??? ??? ????????mods[0]?=?new?ModificationItem(DirContext.REPLACE_ATTRIBUTE,??? ????????????????new?BasicAttribute("unicodePwd",?newUnicodePassword));??? ????????mods[1]?=?new?ModificationItem(DirContext.REPLACE_ATTRIBUTE,??? ????????????????new?BasicAttribute("userAccountControl",?Integer??? ????????????????????????.toString(UF_NORMAL_ACCOUNT?+?UF_PASSWORD_EXPIRED)));??? ??? ????????//?Perform?the?update??? ????????ctx.modifyAttributes(userName,?mods);??? ????????System.out.println("Set?password?&?updated?userccountControl");??? ????????//?now?add?the?user?to?a?group.??? ??? ????????try?{??? ????????????ModificationItem?member[]?=?new?ModificationItem[1];??? ????????????member[0]?=?new?ModificationItem(DirContext.ADD_ATTRIBUTE,??? ????????????????????new?BasicAttribute("member",?userName));??? ??? ????????????ctx.modifyAttributes(groupName,?member);??? ????????????System.out.println("Added?user?to?group:?"?+?groupName);??? ??? ????????}?catch?(NamingException?e)?{??? ????????????System.err.println("Problem?adding?user?to?group:?"?+?e);??? ????????}??? ????????//?Could?have?put?tls.close()?prior?to?the?group?modification??? ????????//?but?it?seems?to?screw?up?the?connection?or?context????? ??? ????????ctx.close();??? ??? ????????System.out.println("Successfully?created?User:?"?+?userName);??? ??? ????}??? ??? }

我們查看

查看賬戶屬性

然后查看屬性

我們將java文件上傳到附件中,如果加在eclipse中有報錯,請根據(jù)錯誤提示,右擊導入ldap相關的包即可,



本文轉(zhuǎn)自 高文龍 51CTO博客,原文鏈接:http://blog.51cto.com/gaowenlong/1969585,如需轉(zhuǎn)載請自行聯(lián)系原作者

總結

以上是生活随笔為你收集整理的JAVA通过SSL证书创建MS AD账户及设置密码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。