2015-05-14 111 views
0

的屬性我連接到LDAP服務器鮑勃:查看當前連接的LDAP用戶

Hashtable props = new Hashtable(); 
props.put(Context.SECURITY_PRINCIPAL, "cn=Bob,cn=Users,dc=myCompany,dc=com"); 
props.put(Context.SECURITY_CREDENTIALS, "Password1"); 
props.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); 
props.put(Context.PROVIDER_URL, url); 
InitialLdapContext context = new InitialLdapContext(props, null); 

現在我想看看Bob的姓名和電子郵件地址。

我期待在context上找到一個方法來返回當前連接的用戶的屬性,但我找不到一個。

Bob沒有搜索目錄的權限,所以連接後我不能使用context.search

有沒有辦法獲得這些屬性,而無需再次調用LDAP服務器,或者必須先以其他人身份連接?

回答

0

您需要使用RFC 4532'whoami'擴展操作,OID = 1.3.6.1.4.1.4203.1.11.3。你需要自己寫一個ExtendedRequestExtendedResponse類爲該(抱歉不能發表我的,但其實很簡單),並且按如下方式使用它:

WhoAmIExtendedResponse response = (WhoAmIExtendedResponse)context.extendedOperation(new WhoAmIExtendedRequest()); 

然後拿到authZId了迴應。這是當前用戶的DN,前綴爲​​。然後你可以通過context.getAttributes("...")