Столкнулся с необходимостью авторизоваться через LDAP.
Первое:
Нужно установить gem который это умеет делать, в моем случае это net-ldap.
Второе:
Для авторизации через LDAP нужен не логин, как я думал и что стало для меня неожиданностью, а Distinguished Name. Поэтому сначала необходимо его найти в LDAP по логину, а потом уже авторизоваться с его помощью и пароля.
Маленький пример:
Первое:
Нужно установить gem который это умеет делать, в моем случае это net-ldap.
Второе:
Для авторизации через LDAP нужен не логин, как я думал и что стало для меня неожиданностью, а Distinguished Name. Поэтому сначала необходимо его найти в LDAP по логину, а потом уже авторизоваться с его помощью и пароля.
Маленький пример:
require 'net/ldap' def ldap_search(ldap, login) filter = Net::LDAP::Filter.eq("uid", login) ldap.search(filter: filter ) do |entry| return entry.dn end ldap_response(ldap) end def ldap_auth(login, password) ldap = Net::LDAP.new ldap.host = "" ldap.port = 389 ldap.base = "dc=company,dc=ru" dn = ldap_search(ldap, login) or return false ldap.auth(dn, password) ldap.bind or ldap_response(ldap) end def ldap_response(ldap) unless ldap.get_operation_result.code == 0 puts "LDAP ERROR Code: #{ldap.get_operation_result.code}, Message: #{ldap.get_operation_result.message}" return false end end
Комментариев нет:
Отправить комментарий