在身份验证通过后,我设法让Test::Net::LDAP工作,DBD::LDAP能够查询并返回用户。
$ldap->add('uid=myuser,ou=People,dc=foo,dc=bar,dc=com',
attrs => [
cn => 'My User',
displayname => 'My User',
mail => 'myuser@example.com',
userpassword => '{CLEARTEXT}testuserpass28',
objectClass => 'inetOrgPerson',
]
);
然而,如果我更改密码身份验证不会失败,则身份验证传递似乎是欺诈。
$t->post_ok('/api/v2/auth' => json => { user => 'myuser', pass => 'testuserpass' })
[Thu Mar 7 21:31:11 2013] [debug] Successfully authenticated user 'myuser' with dn 'uid=myuser,ou=People,dc=foo,dc=bar,dc=com'.
这里基本上是验证码。
## validate_user
my $ldap
= load_class('Authen::Simple::LDAP')->new(
basedn => $config->{RBAC}->{basedn},
host => $config->{RBAC}->{host},
log => $s->param('log'),
);
my $auth
= load_class('Authen::Simple')
->new( $ldap )
->authenticate( $username, $password );
return $username if $auth;
...
$self->plugin(
'authentication' => {
session_key => $self->config('session_cookie_key'),
stash_key => $self->config('stash_key'),
lazy_mode => 'on',
load_user =>
\&Authentication::load_user,
validate_user =>
\&Authentication::validate_user
}
);
我很确定它部分有效,因为有时甚至找不到用户,我认为它只是找不到要比较的密码,可能是因为密码字段错误或位置错误。我该如何正确定义?