簡體   English   中英

如何通過Java從Active Directory驗證用戶身份?

[英]How to authenticate user against Active Directory from java?

我需要通過Java對Active Directory驗證用戶身份。 為了了解幕后情況,我從這里開始了openldap docker實例和spring教程: https : //spring.io/guides/gs/authenticating-ldap/

我從許多調試會話中了解到,Spring從ldap檢索password屬性,並將其與哈希用戶密碼進行比較,或者它僅按uid和哈希密碼過濾用戶,如果有條目,則密碼正確。

好的聽起來不錯。 現在,我正在嘗試對Active Directory執行相同的操作。 問題是,當我從中檢索用戶時,它給了我很多屬性,但沒有給我任何看起來像哈希密碼的屬性。 因此,也許Active Directory不允許獲取密碼屬性,因此我應該通過該屬性過濾用戶。 但是我不知道它的名字,也不知道從哪里得到它。

因此,我的問題是:1.我是否了解一切正確? 2.我是否只需要按uid和哈希密碼過濾用戶? 3.如果第二個是正確的,那么對用戶過濾的查詢是什么? 4.如果第二個密碼不正確,那么我理解錯了什么?我該如何從Java通過Active Directory對用戶進行身份驗證?

我將繼續對Active Directory使用綁定身份驗證方法。 過去,我在使用Active Directory(或ADAM)時沒有遇到任何問題。 在綁定方案中,您只需使用用戶提供的用戶名和密碼,並允許LDAP實例執行比較(身份驗證)。 這是Spring文檔的參考部分:

18.3.2使用綁定身份驗證

這是最常見的LDAP身份驗證方案。

這個簡單的示例將通過用提供的模式替換用戶登錄名並嘗試使用登錄密碼將該用戶綁定來獲取該用戶的DN。 如果所有用戶都存儲在目錄中的單個節點下,則可以。 相反,如果您希望配置LDAP搜索過濾器來定位用戶,則可以使用以下方法:

如果與上面的服務器定義一起使用,這將使用user-search-filter屬性的值作為過濾器在DN ou = people,dc = springframework,dc = org下執行搜索。 再次用用戶登錄名代替過濾器名稱中的參數。 如果未提供user-search-base,則將從根目錄執行搜索。

您可能需要通讀有關LDAP身份驗證的內容(Spring 3.x文檔的第18章)。 您可能還會發現其他有用的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM