2012-07-11 7 views
9

현재 사용자가 정보에 액세스하기 위해 로그인해야하는 node.js의 웹 응용 프로그램에서 작업 중입니다. 외부 활성 디렉토리 서버로 사용자 로그인 및 비밀번호를 확인하고 싶습니다. node-ldapauth를 사용해 보았지만 작동시키지 못했습니다 (활성 디렉토리에서 작동하는지, 아니면 그냥 openLdap에서 작동하는지 모르겠습니다). 어떤 제안?ldap nodejs 활성 디렉토리 인증

답변

4

문제 해결을 위해 rubyldap 라이브러리를 사용했습니다.

업데이트 : 요청으로이 내가 서버에 루비 라이브러리를 설치 한 후 문제를 https://github.com/ruby-ldap/ruby-net-ldap/

를 해결하는 데 사용되는 라이브러리 (너무 어렵지 않습니다까지 그것을 볼)

require 'rubygems' 
    require 'net/ldap' 

    ldap = Net::LDAP.new :host => server_ip_address, 
     :port => 389, 
     :auth => { 
      :method => :simple, 
      :username => "cn=manager, dc=example, dc=com", 
      :password => "opensesame" 
     } 

    filter = Net::LDAP::Filter.eq("cn", "George*") 
    treebase = "dc=example, dc=com" 

    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 

    p ldap.get_operation_result 
설치 보석을 사용한다

위와 같이 루비 파일을 설정하십시오.

당신은 루비에서 사용자 및 암호가 ARGV [0] ARGV 1를 사용 잡아

var ldap = 'ruby '+process.cwd()+'/src/ruby/ruby_file_name '+ user+' '+password; 

를 사용하여 루비 라이브러리를 실행할 수 있습니다.

: 당신은 표준 출력

예를 전달하여 반환 된 루비 라이브러리 결과를 드실 수 theCallBack 기능에 기능

var result = exec(ldap, theCallBack); 

을 전화를 다시 사용하여 루비는 Node.js를에 결과를 반환 잡을 수 있습니다

function theCallBack(err,stdout) { 
    ----your code here, stdout is what you PUT in the ruby library. 

희망이 도움이됩니다.

+1

이 답변을 편집하여 사용했던 솔루션에 대한 정보/링크/코드를 추가하면이 문제가있는 사람들을 도울 수 있습니다. – Dhaust

+1

요청에 따라 솔루션을 업데이트했습니다. – Denis

+0

우수 감사합니다. – Dhaust

0

코드 스 니펫과 오류를 게시 할 수 있습니까?

나는 비슷한 것을 시도하고 있으며 ldapjs 라이브러리를 발견했습니다. LDAP 서버에 대한 클라이언트 LDAP 연결을 구현할 수 있으며 사용자 이름과 비밀번호의 유효성을 검사 할 수 있습니다.

나는 0.8.2로 윈도우에 설정을 시도하고 개발자가 들여다 보듯이 어떤 이슈로 도망 갔다. 이 라이브러리의 좋은 점은 당신이 참조한 OpenLDAP 바인딩에 의존하지 않는다는 것입니다. Windows에서 작업 ldapjs를 설치하지를 들어

+0

https://github.com/mcavage/node-ldapjs/issues/81은 Windows에서의 설치 문제를 언급했습니다. – Christophe

+0

내 코드의 스 니펫은 ldapauth 라이브러리처럼 보입니다 https://github.com/trentm/node-ldapauth 예제 코드 – Denis

+0

을 사용했습니다.로그인 (LDAP) 내가 보답이 뭔가를 얻을 연결 : {쌍 : [오브젝트], 쓰기 : 사실, 읽기 : 사실, _paused : 거짓, _needDrain : 거짓, _pending : [], _pendingCallbacks : [], _pendingBytes : 0, 소켓 : [오브젝트], 암호화 : [오브젝트], 등등 등 – Denis