2011-07-31 13 views
1

私が作成したLDAPサーバをもう一度認証しようとしています。ユーザーパスワードは、ldap内にshaハッシュとして格納されます。しかし、userPassword属性にアクセスしようとすると、その属性は存在しません。私はマネージャーとしてログインする必要があります。これはプロダクションサーバー上ではあまり良いアイデアではないと思っています。これを回避する方法はありますか?openldap auththentication php5 - パスワードを比較する

答えて

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); 
?> 
関連する問題