2015-12-14 19 views
0

我想檢索存儲在LDAP服務器中的用戶DN,並保留原始字符大小寫。例如,我們假設我的服務器中的DN是「cn = Bob,o = MyOrg」。我想使用「cn = bob,o = myorg」查詢服務器,並檢索原始的「cn = Bob,o = MyOrg」。檢索一個JNDI dn及其正確的大小寫

DirContext.getAttributes(dn)方法可以返回一組屬性,但不包括DN本身。另一方面,DirContext.search()使用getNameInNamespace()返回一個包含此信息的SearchResult。不幸的是,搜索表達式似乎不允許在DN上搜索,這就是我所擁有的。

據我所知,我可能通過首先使用getAttributes()檢索唯一屬性,然後在search()中使用此屬性值來實現此目的。但是這導致了2個連接。另外我需要確保我有一個唯一的非null屬性,我可以搜索()。

回答

0

讓我用我找到的解決方案回答我的問題。

它涉及search()函數,其中name參數(搜索上下文)應該是DN,查詢過濾器是空的或類似的(objectClass = *)。然後它返回一行,對應於正在搜索的DN。原始的DN然後在SearchResult中可用。

0

只需查看DN即可。得到的DirContextgetNameInNamespace()應該是正確的。

搜索也可以工作,但效率更低,代碼更多。

相關問題