【问题标题】:openldap auththentication php5 - comparing the passwordopenldap auththentication php5 - 比较密码
【发布时间】:2011-07-31 15:23:43
【问题描述】:

我正在尝试针对我创建的 ldap 服务器进行身份验证。用户密码作为 sha hash 存储在 ldap 中。但是,当我尝试访问 userPassword 属性时,它不存在。我必须以管理员身份登录。我假设这在生产服务器上不是一个好主意。有没有办法解决这个问题?

【问题讨论】:

    标签: php openldap


    【解决方案1】:

    返回密码字段没有意义。您可以简单地使用给定的凭据对 ldap 服务器进行身份验证。

    查看这个例子(参考这里:http://php.net/manual/en/ref.ldap.php

    <?php
    
    $user = 'bob';
    $password = 'zhlob';
    $host = 'myldap';
    $domain = 'mydomain.ex';
    $basedn = 'dc=mydomain,dc=ex';
    $group = 'SomeGroup';
    
    $ad = ldap_connect("ldap://{$host}.{$domain}") or die('Could not connect to LDAP server.');
    ldap_set_option($ad, LDAP_OPT_PROTOCOL_VERSION, 3);
    ldap_set_option($ad, LDAP_OPT_REFERRALS, 0);
    @ldap_bind($ad, "{$user}@{$domain}", $password) or die('Could not bind to AD.');
    $userdn = getDN($ad, $user, $basedn);
    if (checkGroupEx($ad, $userdn, getDN($ad, $group, $basedn))) {
    //if (checkGroup($ad, $userdn, getDN($ad, $group, $basedn))) {
        echo "You're authorized as ".getCN($userdn);
    } else {
        echo 'Authorization failed';
    }
    ldap_unbind($ad);
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-18
      • 1970-01-01
      • 2017-02-25
      • 2013-05-26
      • 1970-01-01
      • 1970-01-01
      • 2017-10-31
      • 2021-04-10
      相关资源
      最近更新 更多