我很难使用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。
很想得到一些例子,提示等。
//罗杰
答案 0 :(得分:1)
dstrace显示您正在获取所有返回的属性:
Empty attribute list implies all user attributes
但它不再显示dstrace中返回的数据。较旧的eDirectory确实在某一点上显示了结果,但现在已经很久没有了。
所以我建议eDir将数据发回。现在了解您的应用如何解析该响应。
答案 1 :(得分:1)
问题部分在于,目前,devise_ldap_authenticatable gem不会将身份验证密码传递给此函数。
https://github.com/cschiewek/devise_ldap_authenticatable/issues
我希望有一个回调,其中一个可以从身份验证的LDAP响应中获得更多,但这似乎不可能。