包含javaldap的詞條

本文目錄一覽:

java 連接 ldap 報錯

應該是用戶名寫的不對,env.put(Context.SECURITY_PRINCIPAL,”cn=” + username);

這裡面應該寫用戶的全路徑名,比如cn=xxxxx,dc=combatelecom,dc=com

說白了就是你怎麼從根節點找到的用戶,把用戶節點的dn拷貝出來就行了

另外那個URL部分寫成env.put(Context.PROVIDER_URL,”ldap://10.10.0.13:389″)

Java獲取Ldap葉子節點

使用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);

}

}

關於ldap java驗證的問題

我寫過這類代碼,與你這段代碼有些不一樣。

env.put(Context.SECURITY_AUTHENTICATION, “none”);這段中我指定他的認證方式是”simple”,也就是採用用戶名/密碼的方式認證,我也不是很清楚採用none是否能夠成功認證。

認證用的用戶名應該要寫全,你需要查看每一個上級節點的屬性,打個比方,IS是CN,FADU是DC,funo.com.cn是DC,那你的認證用戶名就應該是:

DC=funo.com.cn,DC=FADU,CN=IS,CN=caiwei

你先試一下吧,還有問題再討論,令附上LDAP ERROR CODE:

如何通過java操作ldap實現登錄

catch (NamingException e) {

e.printStackTrace();

} finally {

if(ldapCtx != null) {

try {

ldapCtx.close();

} catch (NamingException e) {

}

}

LDAP在JAVA中如何模糊查詢

/** * 獲得LDAP連接(不通過連接池,直接獲得連接) * @return * @throws Exception */ private javax.naming.directory.DirContext getDirContext() throws Exception { DirContext ctx = null; java.util.Hashtable env = new java.util.Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, “com.sun.jndi.ldap.LdapCtxFactory”); env.put(Context.PROVIDER_URL, “ldap://localhost:389”); env.put(Context.SECURITY_AUTHENTICATION, “simple”); env.put(Context.SECURITY_PRINCIPAL, user); env.put(Context.SECURITY_CREDENTIALS, pwd); ctx = new InitialDirContext(env); return ctx; } /** * 返回用戶查詢介面 * @param DN 查找範圍 ou=test,dc=abcd,dc=com * @param filter 過濾條件 cn=* * @param myserach 搜索範圍 * @return LDAP標準介面 * @throws Exception */ public javax.naming.NamingEnumeration getFilter(String DN,String filter,int myserach) throws Exception { DirContext ctx = getDirContext(); try { NamingEnumeration em; SearchControls con = new SearchControls(); con.setSearchScope(myserach); em = ctx.search(DN, filter, con); return em; } finally { // } } /** * 設置條件查找 * @param dn 查找的根結點 * @param filter 查找條件 * @param level 查找範圍 * @return 返回一個由DN組成的JAVA STRING 列表 * @throws Exception */ public java.util.Vector getfilterNodes(String dn,String filter,int level) throws Exception { java.util.Vector ve=new java.util.Vector(); NamingEnumeration em=getFilter(dn,filter,level); while(em!=null em.hasMoreElements()) { SearchResult rs=(SearchResult)em.nextElement(); String db=rs.getName(); if (db.trim().equals(“”)) ve.add(dn); else ve.add(db+”,”+dn); } return ve; } 查看原帖

如何使用Java操作LDAP之LDAP連接

public static void main(String[] args) {

String url = “ldap://10.0.0.10:389/”;

String domain = “dc=dtas,dc=com”;

String user = “cn=administrator,cn=users”;

String password = “111111”;

HashtableString, String env = new HashtableString, String();

env.put(Context.INITIAL_CONTEXT_FACTORY, “com.sun.jndi.ldap.LdapCtxFactory”); // LDAP 工廠

env.put(Context.SECURITY_AUTHENTICATION, “simple”); // LDAP訪問安全級別

env.put(Context.PROVIDER_URL, url);

env.put(Context.SECURITY_PRINCIPAL, user+”,”+domain); // 填DN

env.put(Context.SECURITY_CREDENTIALS, password); // AD Password

env.put(“java.naming.ldap.attributes.binary”, “objectSid objectGUID”);

LdapContext ldapCtx = null;

try {

ldapCtx = new InitialLdapContext(env , null);

queryGroup(ldapCtx);

//queryUser(ldapCtx);

} catch (NamingException e) {

e.printStackTrace();

} finally {

if(ldapCtx != null) {

try {

ldapCtx.close();

} catch (NamingException e) {

}

}

}

}

private static void queryGroup(LdapContext ldapCtx) throws NamingException {

SearchControls searchCtls = new SearchControls();

searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);

String searchFilter = “objectClass=organizationalUnit”;

String searchBase = “ou=myDeptSubDept,ou=myDept,dc=DS-66,dc=com”;

String returnedAtts[] = {“distinguishedName”, “objectGUID”, “name”};

searchCtls.setReturningAttributes(returnedAtts);

NamingEnumerationSearchResult answer = ldapCtx.search(searchBase, searchFilter, searchCtls);

while (answer.hasMoreElements()) {

SearchResult sr = answer.next();

Attributes Attrs = sr.getAttributes();

if (Attrs != null) {

NamingEnumeration? ne = Attrs.getAll();

while(ne.hasMore()) {

Attribute Attr = (Attribute)ne.next();

String name = Attr.getID();

Enumeration? values = Attr.getAll();

if (values != null) { // 迭代

while (values.hasMoreElements()) {

String value = “”;

if(“objectGUID”.equals(name)) {

value = UUID.nameUUIDFromBytes((byte[]) values.nextElement()).toString();

} else {

value = (String)values.nextElement();

}

System.out.println(name + ” ” + value);

}

}

}

System.out.println(“=====================”);

}

}

}

原創文章,作者:WYXQ,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/134936.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
WYXQ的頭像WYXQ
上一篇 2024-10-04 00:09
下一篇 2024-10-04 00:09

相關推薦

發表回復

登錄後才能評論