[英]How do I find all the roles a user has in LDAP using the UnboundID LDAP SDK?
[英]how to get DN in LDAP with user ID using UnboundID LDAP SDK
當我擁有的唯一參數是user-id時,我正在嘗試獲取用戶的DN(可能不止一個)
我也正在使用UnboundID LDap SDK,你可以看到:
public String getCustomerAdminDN(String uid)
{
String result =null;
String filter = "uid=" +uid;
try {
SearchResult searchResult = this.ldapConnection.search("",SearchScope.SUB,filter);
result = searchResult.getMatchedDN();
} catch (LDAPSearchException e) {
throw new RuntimeException("Error in the searching query :" + e.getMessage());
}
return result;
}
我們假設我的uid屬於以下DN
謝謝你的頭腦
在這種情況下的問題是“匹配的DN”元素不是您認為的那樣。 它不是符合搜索條件的條目的DN(實際上可能是零,一個或多個條目)。 如果操作的目標不存在,則可以提供響應的匹配的DN元素。 對於搜索操作,如果您指定了不存在的搜索庫DN,則匹配的DN可能會指定與您指定的實際存在於服務器中的最近條目的DN。 例如,如果您指定的搜索基准DN為“ou =不存在,dc = example,dc = com”,但該項不存在,但條目“dc = example,dc = com”條目確實存在,那么服務器可以返回匹配的DN值“dc = example,dc = com”。
如果您的搜索與一個或多個條目匹配,那么(除非您使用了搜索結果偵聽器,在上面提供的示例中不是這種情況),匹配條目將可通過getSearchEntries方法訪問。 例如:
List<SearchResultEntry> searchEntries = searchResult.getSearchEntries();
if (searchEntries.size() != 1)
{
// The search didn't match exactly one entry.
}
else
{
SearchResultEntry entry = searchEntries.get(0);
result = entry.getDN();
}
此外,當值的一部分可能來自用戶輸入時,從字符串表示構造過濾器時應該小心,因為這可能允許某種注入攻擊。 LDAP注入比SQL更困難,通常更加良性,但並不完全不存在。 因此建議不要:
String filter = "uid=" + uid;
你用:
Filter filter = Filter.createEqualityFilter("uid", uid);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.