我一直致力於將現有伺服器叢集遷移到使用 openldap 進行使用者/密碼管理。但我遇到了一個問題 - 我無法存取純文字密碼,並且所有 SASL 方法(到目前為止我已經確定)都需要資料庫中的純文字密碼。唯一可用的格式是 crypt。時期。
對於許多程式來說,簡單的身份驗證仍然可用。但是,如果使用 libldap2 (openldap),特別是 ldap_sasl_interactive_bind 系列函數僅支援 SASL 連接,則所有其他函數都會被停用和棄用。
那麼,如果 SASL 被破壞,我該如何進行身份驗證? (SASL 不支援地穴 = 損壞)
使用的身份驗證方法: radius (freeradius)
Web
自訂 C 應用程式
ssh
ldap 映像
我已經能夠讓 Radius 工作了,僅此而已。
非常歡迎幫助 - 文件沒有說明為什麼簡單的身份驗證已被棄用,而且它似乎是唯一可以工作的方法。任何時候 SASL 參與時都不起作用。
環境是ubuntu-14.04; openldap、cyrus-sasl(透過 openldap)、freeradius、apache 以及自訂 C 和 C++ 元件。
答案1
LDAP 簡單身份驗證和 SASL/PLAIN 之間沒有太大區別。在這兩種情況下,明文密碼均由客戶端提供並由伺服器處理。OpenLDAP 不需要將密碼儲存在純文字,事實上,可以使用本地系統的地穴(3)功能。由於您在傳輸過程中處理明文密碼,因此應努力確保這些密碼不會以明文形式發送。這通常是透過使用 STARTTLS 作為 LDAP 連接的一部分來完成的,但 LDAPS 也是一個選項。
$ ldapwhoami -h ldap.example.com -ZZ -x -D uid=user,ou=people,dc=example,dc=com -W
Enter LDAP Password:
dn:uid=user,ou=people,dc=example,dc=com
$ ldapwhoami -h ldap.example.com -ZZ -D uid=user,ou=people,dc=example,dc=com -W
Enter LDAP Password:
dn:uid=user,ou=people,dc=example,dc=com