Это более анекдотично, чем реальный ответ ...
У меня был похожий опыт использования серверов Samba и OpenLDAP. Я не мог найти библиотеку, которая действительно делала бы то, что я хотел, поэтому я катал свои собственные вспомогательные классы.
Я использовал ldapbrowser , чтобы посмотреть, какие поля заполняет Samba, когда я создал пользователя «официальным» способом и, по сути, продублировал его.
Единственная хитрая / нестандартная вещь LDAP - это сумасшедшее шифрование пароля, которое у нас есть:
UserPass:
"{MD5}" + Base64.encode64(Digest::MD5.digest(pass))
sambaNTPassword:
OpenSSL::Digest::MD4.hexdigest(Iconv.iconv("UCS-2", "UTF-8", pass).join).upcase
Для функции def authenticate(user, pass)
я пытаюсь заставить LDAP связываться с доменом, используя их учетные данные, если я улавливаю исключение, то вход в систему завершился неудачно, в противном случае впустите их.