我是LDAP和JNDI的新手。我使用OpenDS和使用JNDI訪問LDAP的客戶端設置了使用SSL的LDAP服務器。如何確保從JNDI通過SSL進行LDAP連接
我能做些什麼來確保我真的通過SSL與LDAP服務器進行通信?這是因爲當我試圖通過SSL訪問LDAP時,我沒有發現與客戶端有什麼不同。
EDITED
我已經安裝使用OpenDS的該LDAP服務器。該目錄只包含1個用戶。它的DN是uid = defaultuser,ou = User,o = IT,dc = QuizPortal。 LDAP端口= 1389和SSL端口= 1636。當前某些其他程序正在使用默認端口389 & 636。我也選擇了選項產生自簽名認證。
以下是客戶端端的代碼。它基本上對用戶的屬性做一個簡單的查詢。
public static void main(String[] args)
{
String INITCTX = "com.sun.jndi.ldap.LdapCtxFactory";
String MY_HOST = "ldap://KhooGP-Comp3:1389";
String MGR_DN = "cn=Directory Manager";
String MGR_PW = "password";
String MY_SEARCHBASE = "ou=User,o=IT,dc=QuizPortal";
String MY_FILTER = "uid=defaultuser";
String MY_ATTRS[] = {"cn", "telephoneNumber", "userPassword"};
//Identify service provider to use
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, INITCTX);
env.put(Context.PROVIDER_URL, MY_HOST);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, MGR_DN);
env.put(Context.SECURITY_CREDENTIALS, MGR_PW);
try
{
// Create the initial directory context
InitialDirContext initialContext = new InitialDirContext(env);
DirContext ctx = (DirContext)initialContext;
System.out.println("Context Sucessfully Initialized");
SearchControls constraints = new SearchControls();
constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
NamingEnumeration results = ctx.search(MY_SEARCHBASE, MY_FILTER, constraints);
while(results != null && results.hasMore())
{
SearchResult sr = (SearchResult) results.next();
String dn = sr.getName() + "," + MY_SEARCHBASE;
System.out.println("Distinguished Name is " + dn);
Attributes ar = ctx.getAttributes(dn, MY_ATTRS);
if(ar == null)
{
System.out.println("Entry " + dn);
System.out.println(" has none of the specified attributes\n");
}
else
{
for(int i=0; i<MY_ATTRS.length; i++)
{
Attribute attr = ar.get(MY_ATTRS[i]);
System.out.println(MY_ATTRS[i] + ":");
for(Enumeration vals=attr.getAll(); vals.hasMoreElements();)
{
System.out.println("\t" + vals.nextElement());
}
}
}
}
}
catch(Exception e)
{
System.err.println(e);
}
}
我也做了netstat的按勸和有端口通信1636這是否意味着我對SSL通信真的了嗎?
您能否考慮發佈一些您的代碼示例?可以幫助別人更好地幫助你。 – geoffc 2010-08-12 14:21:23