2016-10-27 15 views
0

LDAPサーバーに接続しようとしています。PerlによるLDAPバインド操作

my $ldap = Net::LDAP->new ($ip_address) or die "[email protected]"; 

my $mesg = $ldap->bind ($username, 
         password => $password, 
           ) or die [email protected]; 

my $result = $ldap->search(
     base => $base, 
     filter => $filter 
     attrs => \@attributes, 
     ); 

die $result->error if $result->code; 

$ result->:私は次のコードを使用していLDAPサーバ

  • ユーザ名
  • パスワード
    1. IPアドレス:お客様が私には3情報次送らエラー値:

      '000004DC:LdapErr:DSID-0C090728、コメント:この操作を実行するには、接続で正常なバインドを完了する必要があります。

      メッセージによると、バインドは成功しません。しかし、それが失敗した場合には死ぬべきです。私はパスワードを変更し、間違った価値を書いた、それは再び死ぬことはなかった。

      私は、バインドの戻り値である$のMESGをダンプし、次のメッセージを見た:

      「80090308:LdapErr:DSID-0C0903C5、コメント:AcceptSecurityContextエラー

      しかし、それは正しいユーザ名と同じですがとパスワードも。ユーザー名は 'itservice'です。

      my $mesg = $ldap->bind ('itservice', 
               password => $password, 
               ) or die [email protected]; 
      

      は、私は次のように試みたが、結果は同じです

      my $mesg = $ldap->bind ('cn=itservice', 
                password => $password, 
                ) or die [email protected]; 
      

      ユーザー名やパスワードを使用して、任意の他の形式があります:私は次のように使用していますか?

    +0

    http://search.cpan.org/~marschap/perl-ldap/lib/Net/LDAP.pod#start_tlsあなたは正しいポートを指定する必要があり – xxfelixxx

    +0

    。 – xxfelixxx

    +0

    コマンドラインから 'ldapsearch'クエリを実行できますか?私は、次のしようとしています – xxfelixxx

    答えて

    0

    LDAPバインド要求には、ユーザー名だけでなくユーザーの有効なDNが必要です。 通常、アプリケーションは最初にuserNameを検索してユーザーDNを取得し、ユーザーとしてバインドします。

    +0

    次のように端末から接続しようとしています。 ldapsearch -hホスト-p 389 -x -D "cn = username" -wパスワード-sベース-b "DC =事実、DC =イントラ、DC = tr" しかし、私は次を参照してください。 はldap_bind:無効な資格情報(49) \t追加情報:80090308:LdapErr:DSID-0C0903C5、コメント:AcceptSecurityContextエラー、データ52eと、v2580 お客様には、ホスト、ユーザ名とパスワードがあると言うが正しい。 検索コマンドが間違っていますか? –

    +0

    "cn = username"は完全なDNではありません。より適切な値は、 "cn = username、ou = people、dc = example、dc = com"でなければなりません。これは、完全にLDAPに準拠していないMS ADと対話しており、追加の情報文字列には、AD固有の詳細が含まれているという。 –