へっぽこネットワークエンジニアのにっき

しあわせになりたい。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Net::LDAPをつかってみる その2

前回のつづき

uidとuserPasswordを入力し、入力したuidの情報を取得するサンプル

userbind_search.pl

#! /usr/bin/perl

use strict;
use warnings;
use Net::LDAP;

#
#LDAP Server Configuration
#
my $ldapserver ='localhost';
my $basedn ="ou=People,dc=hoge,dc=co,dc=jp";
my $ldap = Net::LDAP->new($ldapserver) or die "$@";

my ($uid,$password) = @ARGV;

my $binddn ="uid=$uid,"."$basedn";

#LDAP user search
$ldap->bind("$binddn",password =>"$password");
my $msg = $ldap->search(
base => "$basedn",
filter =>"(uid=$uid)",
);

$msg->code && die $msg->error;

foreach my $entry ($msg->all_entries) {
print $entry->get_value('uid')."\n";
print $entry->get_value('cn')."\n";
print $entry->get_value('mail')."\n";
print $entry->get_value('userPassword')."\n";
}

#スキーマ情報を全部取得するなら以下でOKみたい
#foreach my $entry ($msg->entries) { $entry->dump; }

$ldap->unbind;

exit 0;



./userbind_search.pl [uid] [userPassword]



この場合、正しいuid パスワードを入れると該当するuidの全ての値が表示され、パスワードを間違えて入力すると、出力結果は匿名認証時と同様となる。
ログを見てみる
正しく入力した場合

centos1 slapd[2252]: conn=12 fd=12 ACCEPT from IP=127.0.0.1:56784 (IP=0.0.0.0:389)
centos1 slapd[2252]: conn=12 op=0 BIND dn="uid=[uid],ou=People,dc=hoge,dc=co,dc=jp" method=128
centos1 slapd[2252]: conn=12 op=0 BIND dn="uid=[uid],ou=People,dc=hoge,dc=co,dc=jp" mech=SIMPLE ssf=0
centos1 slapd[2252]: conn=12 op=0 RESULT tag=97 err=0 text=
centos1 slapd[2252]: conn=12 op=1 SRCH base="ou=People,dc=hoge,dc=co,dc=jp" scope=2 deref=2 filter="(uid=[uid])"
centos1 slapd[2252]: conn=12 op=1 SEARCH RESULT tag=101 err=0 nentries=1 text=
centos1 slapd[2252]: conn=12 op=2 UNBIND
centos1 slapd[2252]: conn=12 fd=12 closed



userPasswordを間違えた場合

centos1 slapd[2252]: conn=13 fd=12 ACCEPT from IP=127.0.0.1:56785 (IP=0.0.0.0:389)
centos1 slapd[2252]: conn=13 op=0 BIND dn="uid=[uid],ou=People,dc=hoge,dc=co,dc=jp" method=128
centos1 slapd[2252]: conn=13 op=0 RESULT tag=97 err=49 text=
centos1 slapd[2252]: conn=13 op=1 SRCH base="ou=People,dc=hoge,dc=co,dc=jp" scope=2 deref=2 filter="(uid=[uid])"
centos1 slapd[2252]: conn=13 op=1 SEARCH RESULT tag=101 err=0 nentries=1 text=
centos1 slapd[2252]: conn=13 op=2 UNBIND
centos1 slapd[2252]: conn=13 fd=12 closed


3行目でエラーコード49(ldap_bind: Invalid credentials)が出ているが、そのまま検索を実施している

uidを間違えた場合

centos1 slapd[2252]: conn=14 fd=12 ACCEPT from IP=127.0.0.1:56786 (IP=0.0.0.0:389)
centos1 slapd[2252]: conn=14 op=0 BIND dn="uid=[誤ったuid],ou=People,dc=hoge,dc=co,dc=jp" method=128
centos1 slapd[2252]: conn=14 op=0 RESULT tag=97 err=49 text=
centos1 slapd[2252]: conn=14 op=1 SRCH base="ou=People,dc=hoge,dc=co,dc=jp" scope=2 deref=2 filter="(uid=[誤ったuid])"
centos1 slapd[2252]: conn=14 op=1 SEARCH RESULT tag=101 err=0 nentries=0 text=
centos1 slapd[2252]: conn=14 op=2 UNBIND
centos1 slapd[2252]: conn=14 fd=12 closed


こちらもエラー49で、そもそもuidが間違っているので、nentries=0となる。
当然、何も出力されていない。
スポンサーサイト

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://heppokone.blog27.fc2.com/tb.php/446-4eca3d57
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。