如果 LDAP server 允許匿名登入的話,連線上只要打 port 之類的就好
ex:
LdapConnection connection = new LdapNetworkConnection( "127.0.0.1", 10389 );
connection.connect();
//do something....
connection.close();
不過如果需要用 user/pwd 登入 的話,那就是要利用 config 連線
http://directory.apache.org/api/user-guide/2.1-connection-disconnection.html
然後就要記得 bind,才能再進行其他的操作
http://directory.apache.org/api/user-guide/2.2-binding-unbinding.html
目前的寫法大概是這樣~
Name: 用dn name 比較沒問題
Credentials: 就是 password...
SslProtocol:apacheDS 提供的SSL是 ldaps:// 協定。沒設定就是一般沒加密連線
(簡易寫法連線,最後面打true,就可以走 ssl)
連線上了之後要 bind...
LdapConnectionConfig config = new LdapConnectionConfig();
config.setLdapHost( "localhost" );
config.setLdapPort( 10389 );
config.setName( "cn=AddTest11,ou=users,dc=example,dc=com" );
config.setCredentials( "t123456" );
config.setSslProtocol("ldaps://");
LdapConnection connection = new LdapNetworkConnection(config);
connection.connect();
System.out.println("connection="+connection);
connection.bind(config.getName(), config.getCredentials());
if(connection.exists("uid=admin,ou=system")) {
System.out.println("true");
} else {
System.out.println("false");
}
connection.close();
如果 client 沒有進行 bind,server 端又設定 不能匿名訪問的話,在進行search 操作時,那個 server端會有錯誤訊息XD...但client 是無感的(但是查到的 entry 會是空的,但沒看到exception)...只是理論上看 source code,應該是會丟 LdapNoPermissionException 出來的,不知為啥client沒收到O_oa...
另外理論上,看文件~ 應該是要指定 bind dn,不過好像用 .bind() 也會過~
是說,可以用普通user連線,然後 bind 到 admin,權限可以比較大!(好像sudo一樣XD)
沒有留言:
張貼留言