我的 LDAP 身份验证出现了一个奇怪的行为,我需要这个来使用他们的 AD 凭据对用户进行身份验证,这就是我所拥有的:
session_start();
$adServer = "MY IP";
$ldapconn = ldap_connect($adServer) or $this->msg = "Could not connect to LDAP server.";
$ldaprdn = "DOMAIN\\" . $_POST["username"];
$ldapbind = ldap_bind($ldapconn, $ldaprdn, $_POST["password"]);
if ($ldapbind) {
//$msg = "Successfully Authenticated";
$_SESSION['loggedin'] = 1;
$_SESSION['username'] = $username;
header("Location: ../main.php");
} else {
header("Location: ../index.php?login_failed=1");
}
这是我得到的不同行为:
- 无用户名/无密码 = 已通过身份验证(错误)
- 用户名/无密码 = 已通过身份验证 (BAD)
- 不正确的用户名/密码(两个字段都给出)= 未通过身份验证
- 正确的用户名/密码(两个字段均已给出)= 已通过身份验证
我发现这很难召集,如果未使用密码字段,所有用户都将被验证。但是,如果我确实使用密码字段,它只会使用正确的凭据对用户进行身份验证。
我在这里做错了什么还是应该开始唠叨 IT 人员?