大企業のイントラネット Web サイトを管理しています。現在のユーザー認証システムに障害が発生したため、緊急の解決策を開発する必要がありました。ここに簡略化されたコードがあります
$usr=$_POST['user'];
$psw=$_POST['code'];
if(!strlen($psw) )
$psw="x";
// because empty password works fine for any user
$ldap= ldap_connect("LDAP://ldapserver.xxx.local");
if(!$ldap)
exit(0);
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ldap, LDAP_OPT_OPT_REFERRALS, 0);
if($bind = @ldap_bind($ldap, $usr, $psw){
header("Location: http:10.xx.xx.xx/entrance.php?id=$usr");
// login OK, look for user privileges
}else{
header("Location: http:10.xx.xx.xx/login.php?INV=1");
// back to login page
}
コードは問題なく動作しますが、ネットワーク ユーザー名とパスワードを入力する必要はありません。ユーザーがこのページにアクセスし、LDAP サーバーに匿名で接続してバインドすると、ページはこのユーザーのユーザー名に関する情報を取得できます。
そして、フルネーム、支店コード、支店、メールアドレスなどの追加情報を提供できれば、それは大きなボーナスになります..