模拟LDAP密码

时间:2013-03-08 03:43:58

标签: perl authentication ldap

在身份验证通过后,我设法让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
    }
);

我很确定它部分有效,因为有时甚至找不到用户,我认为它只是找不到要比较的密码,可能是因为密码字段错误或位置错误。我该如何正确定义?

0 个答案:

没有答案