新聞中心
java 連接 ldap 報錯
應(yīng)該是用戶名寫的不對,env.put(Context.SECURITY_PRINCIPAL,"cn=" + username);
公司專注于為企業(yè)提供成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、微信公眾號開發(fā)、商城開發(fā),小程序開發(fā),軟件按需制作網(wǎng)站等一站式互聯(lián)網(wǎng)企業(yè)服務(wù)。憑借多年豐富的經(jīng)驗,我們會仔細了解各客戶的需求而做出多方面的分析、設(shè)計、整合,為客戶設(shè)計出具風(fēng)格及創(chuàng)意性的商業(yè)解決方案,成都創(chuàng)新互聯(lián)公司更提供一系列網(wǎng)站制作和網(wǎng)站推廣的服務(wù)。
這里面應(yīng)該寫用戶的全路徑名,比如cn=xxxxx,dc=combatelecom,dc=com
說白了就是你怎么從根節(jié)點找到的用戶,把用戶節(jié)點的dn拷貝出來就行了
另外那個URL部分寫成env.put(Context.PROVIDER_URL,"ldap://10.10.0.13:389")
Java獲取Ldap葉子節(jié)點
使用netscape的ldap工具包。使用其它的工具包,寫法類似。
注:必須知道base dn,以下假定ou=admin為base dn。若有明確的base dn,那寫法比如:ou=admin,o=test1
源代碼如下:
==========================
import netscape.ldap.*;
public class SearchTest {
public static void main(String[] args) {
LDAPConnection lc = null;
LDAPEntry findEntry = null;
int status = -1;
try {
// lc = ConnectionPool.
lc = new LDAPConnection();
/* Connect to server */
String MY_HOST = "localhost";
int MY_PORT = 389;
lc.connect(MY_HOST, MY_PORT);
System.out.println("1=========" +lc.isConnected());
lc.authenticate("cn=Directory Manager","password");
System.out.println("2=========" +lc.isConnected());
/* search for all entries with surname of Jensen */
String MY_FILTER = "(objectclass=*)";
String MY_SEARCHBASE = "ou=admin";
LDAPSearchConstraints cons = lc.getSearchConstraints();
cons.setBatchSize(0);
cons.setMaxResults(5);
MY_FILTER = "(objectclass=*)" ;
LDAPSearchResults res = lc.search(MY_SEARCHBASE,
LDAPConnection.SCOPE_ONE,
MY_FILTER,
null,
false,
cons);
while (res.hasMoreElements()) {
LDAPEntry cLDAPEntry = res.next() ;
System.out.println("" + cLDAPEntry.getDN());
System.out.println("" + cLDAPEntry.toString());
}
status = 0;
} catch (LDAPException e) {
System.out.println("Error: " + e.toString());
e.printStackTrace();
}
/* Done, so disconnect */
if ((lc != null) lc.isConnected()) {
try {
lc.disconnect();
System.out.println("3=========" +lc.isConnected());
} catch (LDAPException e) {
System.out.println("Error: " + e.toString());
}
}
System.out.println("4=========" +lc.isConnected());
System.exit(status);
}
}
關(guān)于ldap java驗證的問題
我寫過這類代碼,與你這段代碼有些不一樣。
env.put(Context.SECURITY_AUTHENTICATION, "none");這段中我指定他的認(rèn)證方式是"simple",也就是采用用戶名/密碼的方式認(rèn)證,我也不是很清楚采用none是否能夠成功認(rèn)證。
認(rèn)證用的用戶名應(yīng)該要寫全,你需要查看每一個上級節(jié)點的屬性,打個比方,IS是CN,F(xiàn)ADU是DC,funo.com.cn是DC,那你的認(rèn)證用戶名就應(yīng)該是:
DC=funo.com.cn,DC=FADU,CN=IS,CN=caiwei
你先試一下吧,還有問題再討論,令附上LDAP ERROR CODE:
java 怎么樣實現(xiàn)新建一個ldap OU,通過用戶在控制臺自定義輸入DN,在AD中自動建好OU相關(guān)目錄?
寫代碼程序把你寫的這個 DN,分拆成每個 SubContext ,然后在代碼中綁定上去:
// initialize config
Properties config = new Properties();
config.setProperty(Context.PROVIDER_URL, 你的 root URL);
Context root = new InititalContext().lookup("");
Context abc = root.createSubContext("ou=Abc");
Context cde = abc.createSubContext("ou=Cde");
...
你的收到的 DN 分拆成這幾個步驟依次 createSubContext 就好了。
文章名稱:ldapjava源代碼 ldapjdk
分享網(wǎng)址:http://fisionsoft.com.cn/article/docscph.html