2014-03-12 60 views
0

我一直在尋找一種使用spring ldapTemplate來驗證LDAP用戶名的方法。如何使用ldapTemplate從LDAP獲取用戶名確認?

我的搜索導致我

ldapTemplate.search(base, filter, contextMapper/AttributeMapper) 

但我想知道什麼,我需要把在contextMapper或attributeMapper。從我讀過的內容來看,它用於將數據映射到對象。但我不需要這個對象。我只想要一個布爾值來知道它是否存在。

我的屬性的例子:

base="ou=accounts,dc=example,dc=local" 
// Replace $1 with the username we'd like to find. 
filter="(&(objectclass=Person)(sAMAccountName=$1))" 

我的模板中包含的網址,用戶名和密碼,連接已經建立。

我可以使用一點幫助,因爲我不知道如果使用搜索方法是正確的方式去這裏。

我有認證設置與ldapTemplate,並希望重新使用它。

感謝

+0

我的猜測是過濾器應該是'(&(objectclass = Person)(sAMAccountName = $ 1))',因爲LDAP不會理解HTML實體。 – mvreijn

+0

那麼它不會給我的身份驗證方法帶來任何問題,所以...我們將在這裏看看是否給出錯誤。 –

回答

0

你將不得不要麼

對於後者,使用new LdapEntryIdentificationContextMapper();只需創建一個空的實例,並添加到您的通話search()。結果將是您可以步行穿過的List<LdapEntryIdentification>的一個實例。

+0

但是,這將返回用戶的所有信息? 如果用戶存在,是不是有辦法讓LDAP返回true或false?我不需要在本地的用戶,並希望避免它,因爲它可能是一個安全風險。 另外我很抱歉花了這麼長時間回答,我無法在週末登錄。 –

+0

好吧,所以我使用了上下文映射器的搜索功能,它只返回用戶名並用於驗證。所以我得到了它的工作。 但是可以肯定的是:所以沒有辦法問LDAP這個用戶是否存在?意思是返回一個布爾值。你總是要問:如果他存在,給我這個用​​戶? –

+0

答案是肯定的,沒有布爾值:) LDAP基本上是一個搜索協議,所以你搜索一個用戶並得到零或多個結果。您可以限制只返回到DN的數據量,這正是您想要的。使用你的'LdapEntryIdentification'的'getRelativeName()'來到達DN。 – mvreijn