2012-06-20 2 views
3

여러분! 다음과 같은 오류 메시지가 나타나고 무엇을해야할지 전혀 모릅니다. 이것은 이미 알려진 net-ldap 버그입니까? 나는 보석을 업데이 트하려고하고 이미 인터넷에서 추가 정보를 찾았다. 첫 번째 부분은 괜찮아요, 내 LDAP 데이터베이스에서 아군 내 데이터를 얻을 수 있지만이 오류가 결국 발생합니다.net ldap - 인코딩 :: UndefinedConversionError

/usr/local/lib/ruby/gems/1.9.1/gems/net-ldap-0.3.1/lib/net/ber/core_ext/string.rb:23:in encode': "\x8E" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError) from /usr/local/lib/ruby/gems/1.9.1/gems/net-ldap-0.3.1/lib/net/ber/core_ext/string.rb:23:in raw_utf8_encoded ' /usr/local/lib/ruby/gems/1.9.1/gems/net-ldap-0.3.1/lib/net/ber/core_ext/string.rb:15:in to_ber' from /usr/local/lib/ruby/gems/1.9.1/gems/net-ldap-0.3.1/lib/net/ldap.rb:1396:in 검색의 블록' /usr/local/lib/ruby/gems/1.9.1/gems/net-ldap-0.3.1/lib/net/ldap.rb:1367:in loop' from /usr/local/lib/ruby/gems/1.9.1/gems/net-ldap-0.3.1/lib/net/ldap.rb:1367:in 검색에서 ' /usr/local/lib /ruby/gems/1.9.1/gems/net-ldap-0.3.1/lib/net/ldap.rb:637:in `search '

,363,210

여기에 내 코드 :

require 'rubygems' 
require 'net/ldap' 

ldap = Net::LDAP.new 
ldap.host = 'xxxxxx' 
ldap.authenticate "cn=admin, dc=xxxx, dc=xxxxx, dc=de", "xxxxx!" 
#puts ldap.bind 
if ldap.bind 
    # authentication succeeded 
else 
    # authentication failed 
# p ldap.get_operation_result 
end 


filter = Net::LDAP::Filter.eq("uid", "*") 
treebase = "xxxxx, dc=xxxxxx, dc=de" 

ldap.search(:base => treebase, :filter => filter) do |entry| 
    puts "DN: #{entry.dn}" 
    entry.each do |attribute, values| 
    puts " #{attribute}:" 
    values.each do |value| 
     puts "  --->#{value}" 
    end 
    end 
end 

답변

1

저도 같은 문제를 얻고, 및 (루비 1.9.3-p194/그물 LDAP 0.3.1 맥 OS X 10.7.4에) 그것에 대해 내 사나이 머리를 긁적하고있다. 루비 -ldap (net-ldap의 전신)과 루비 -ldap (이 net-ldap보다 최신 버전으로 보입니다)을 루비 -ldap이 우리 사이트에 연결하지 않는 것 같았습니다. (Novell) LDAP 서버를 사용할 수 있습니다. 저의 다음 연구 방법은 왜 루비가 연결되지 않는지 알아 내려고, 가능하다면 사용하는 것입니다.

겉으로보기에 문제는 Ruby < -> net-ldap에서 문자열을 인코딩하는 것입니다. Ruby 1.9.x는 UTF-8로 원하고 net-ldap은 ASCII-8BIT로 원한다.

어떤 사람들은 net-ldap이 도착할 때까지 데이터를 각 방향으로 이동하면서 강제 변환 (즉, net-ldap 객체에 값을 전달할 때 ASCII-8BIT으로 강제하고 값을 받으면 강제로 UTF-8로 강제 변환)을 임시 해결책이라고합니다. 결정된. 그러나, 그것은 나를 위해 그것을하지 않습니다.

위하고 일부 코드는 여기에 있습니다 :

https://groups.google.com/forum/?fromgroups#!topic/ruby-ldap/pyie3Fx42Jc

... 나는 다른 사람들이 성공을보고하는 것 비록 그것이 더 나은 나를 위해 일을 만들고있다 말할한다. 내 특별한 경우에는 검색 매개 변수로 특수 문자를 보내지는 않지만 특수 문자를 다시 가져올 것으로 기대합니다 (성 값 등). 또한 LDAP 트리에서 아무것도 편집하지 않으려 고합니다. 단지 검색 중이에요. 당신과 마찬가지로, 로그인은 문제가되지 않고 검색 만합니다.

나는 위의 조언을 통해 문제를 해결할 수 있기를 바랍니다. 또한 때로는 스크립트 (난 그냥 루비 스크립트를 사용하고, 레일 앱이 아님)가 오류없이 완료되고 다른 시간에 (수정하지 않고!) 오류가 발생한다는 것을 알았습니다. 불과 몇 초 후에 실행됩니다. 그래서 당신이 그것을 깨뜨 렸다고 생각한다고해도, 당신이 운이 좋았을 때를 대비하여 많은 조언을 구하는 것이 좋습니다.

내가 누구 8 월 2011했다 그물 LDAP를 업데이트하는 것을 발견 한 가장 최근의 제안은, 그래서 그것을 잠시 동안 수 있다고 생각하는 경향이 있어요 것은 수정이 해제되기 전에 : -/

당신이 할 수있는 경우 ruby-ldap (글을 쓰는 시점에서는 0.9.12)을 시도해 볼 가치가있을 것입니다. 설치 프로그램에 연결하면 검색시 더욱 강력해질 수 있습니다.

해결책을 찾은 경우 다시 신고 해주세요. 건배, 켄

+0

안녕 켄! 고마워요! Google 그룹의 코드가 도움이되지 않았지만 루비 -ldap을 사용하도록 확신했습니다. 처음에는이 모듈이 마음에 들지 않았지만 지금은 더 잘 작동합니다. ... 변환 오류가 없습니다. 수정 기능이 있지만 어떻게 작동하는지 모르겠습니다. 잘못된 부분을 대체하는 것이 가능할 수도 있습니다. 연결에 어떤 문제가 있습니까? – gadreel

+0

@ user1458773 다행이 당신을 위해 일하는 것 같습니다! 내 문제는 내가 인증하는 동안 루비 -ldap이 간단한 TLS를 사용하도록 만드는 방법을 볼 수 없다는 것이다. net-ldap에서 다음과 같이 할 수 있습니다 : Net :: LDAP.new (: host => server, : port => 636, : auth => {: method => : simple, : username => username, password = > password}, ​​: encryption => : simple_tls)'그러나 단순한 TLS를 사용하는 루비 -ldap을 얻는 방법을 알 수는 없습니다. LDAP :: Conn.bind "method"매개 변수의 기본값은 LDAP :: LDAP_AUTH_SIMPLE이지만 다른 옵션은 무엇인지 찾을 수 없습니다. 이 문제를 해결했다면 알려주세요! –

3

net-ldap [1], [2], [3], [4]의 v0.3.1에는 인코딩 문제가 많이 있습니다. 여러 패치가 이미 병합되었지만 슬프게도이 위대한 프로젝트는 반 포기 된 것으로 보이며 변경 사항은 루비 젬으로 푸시되지 않습니다. GitHub의에서 직접 사용 나를 위해 잘 작동하고있다, 당신은 들러를 사용하는 경우, 그것은 당신의 Gemfile이 같은 쉽게 부착 뭔가는 다음과 같습니다

gem "net-ldap", :git => "git://github.com/ruby-ldap/ruby-net-ldap.git", :ref => '8a182675f4' 

1-https://github.com/ruby-ldap/ruby-net-ldap/pull/41
2 - https://github.com/ruby-ldap/ruby-net-ldap/pull/44
3 - https://github.com/ruby-ldap/ruby-net-ldap/pull/64
4 - https://github.com/ruby-ldap/ruby-net-ldap/pull/55

+0

이것은 완전히 나를 위해 일했습니다. 정말 고마워! – cmyers

관련 문제