Пожалуйста, приведите пример использования Rails / Devise / LDAP Devise :: LdapAdapter.get_ldap_param - PullRequest
2 голосов
/ 14 ноября 2011

Я застрял, используя get_ldap_param аутентификацию на сервере eDir ldap. Я могу подтвердить подлинность, но когда я пытаюсь прочитать атрибуты, я ничего не получаю.

def get_ldap_email
    self.email = Devise::LdapAdapter.get_ldap_param(self.uid, "mail")
end

def get_ldap_category
   self.category = Devise::LdapAdapter.get_ldap_param(self.uid, "category")
end

В моем ndstrace.log

92659520 LDAP: [2011/11/14 10:10:07.401] New cleartext connection 0xe4b26c0 from     192.168.21.40:58658, monitor = 0x4b37c940, index = 8
1256683840 LDAP: [2011/11/14 10:10:07.401] DoBind on connection 0xe4b26c0
1256683840 LDAP: [2011/11/14 10:10:07.401] Bind name:cn=admin,o=xxx, version:3, authentication:simple
1256683840 LDAP: [2011/11/14 10:10:07.401] Sending operation result 0:"":"" to connection 0xe4b26c0
1310226752 LDAP: [2011/11/14 10:10:07.402] DoSearch on connection 0xe4b26c0
1310226752 LDAP: [2011/11/14 10:10:07.402] Search request:
base: "cn=ntr,ou=Meta,o=xxx"
scope:0  dereference:0  sizelimit:0  timelimit:0  attrsonly:0
filter: "(objectclass=*)"
no attributes
1310226752 LDAP: [2011/11/14 10:10:07.402] Empty attribute list implies all user attributes
1310226752 LDAP: [2011/11/14 10:10:07.403] Sending search result entry "cn=ntr,ou=Meta,o=xxx" to connection 0xe4b26c0
1310226752 LDAP: [2011/11/14 10:10:07.403] Sending operation result 0:"":"" to connection 0xe4b26c0
1261947200 LDAP: [2011/11/14 10:10:07.405] Monitor 0x4b37c940 found connection 0xe4b26c0 socket closed, err = -5871, 0 of 0 bytes read
1261947200 LDAP: [2011/11/14 10:10:07.405] Monitor 0x4b37c940 initiating close for connection 0xe4b26c0
1251420480 LDAP: [2011/11/14 10:10:07.405] Server closing connection 0xe4b26c0, socket error = -5871
1251420480 LDAP: [2011/11/14 10:10:07.405] Connection 0xe4b26c0 closed

Ошибка, которую я получаю после входа в систему:

NoMethodError in Devise::SessionsController#create

You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.each
Rails.root: /home/ntr/Dropbox/source/devise

Application Trace | Framework Trace | Full Trace
Request

Parameters:

{"utf8"=>"✓",
 "authenticity_token"=>"nkuzPnh8MCK4rh/RXUErrAjVJB9ciy56hfavG60I8ck=",
 "user"=>{"uid"=>"ntr",
 "password"=>"[FILTERED]",
 "remember_me"=>"0"},
 "commit"=>"Logga in"}
Show session dump

Show env dump

Response

Headers:

None

Я искал в Интернете какие-то учебники для этого, но нашел только базовые реализации дополнения devise_ldap. Не использует get_ldap_param.

Очень хотелось бы получить примеры, советы и т. Д.

// Roger

Ответы [ 2 ]

1 голос
/ 23 апреля 2013

Проблема, отчасти, заключается в том, что в настоящее время devise_ldap_authenticatable gem не передает пароль аутентификации этой функции.

https://github.com/cschiewek/devise_ldap_authenticatable/issues

Хотелось бы, чтобы был обратный вызов, где можно было бы получить больше от ответа LDAP от аутентификации, но это не представляется возможным.

1 голос
/ 16 ноября 2011

Dstrace показывает, что вы получаете все возвращенные атрибуты:

Empty attribute list implies all user attributes

Но он больше не показывает возвращенные данные в dstrace.Старая версия eDirectory показывала результаты в трассировке, но не в течение длительного времени.

Так что я бы предложил, чтобы eDir отправлял данные обратно.Теперь о том, как ваше приложение анализирует этот ответ.

...