目前,我负责登录页面。此登录页需要来自Active Directory (AD)的身份验证。因此,我使用LDAP方法。尽管我输入了正确的用户名和密码,但仍然显示消息"Invalid username or password“。
下面是基本的php代码。
home.php
<html>
<head>
<style>
body{
text-align:center;
}
form{
margin: 0 auto; width:500px;
}
input{
padding: 10px; font-size: 20px;
}
</style>
</head>
<body>
<h1>Authentication</h1>
<form action="ldap.php" method="post">
<input type="text" name="username" /><br><br>
<input type="password" name="password" /><br><br>
<input type="submit" value="Login" /><br>
</form>
</body>
</htmlldap.php
<?php
$ldap_dn = "uid=".$_POST["username"].",CN=TG Work Flow,OU=New User,DC=topglove,DC=tg,DC=local";
$ldap_password = $_POST["password"];
$ldap_con = ldap_connect("ldap://172.16.10.43:389");
ldap_set_option($ldap_con, LDAP_OPT_PROTOCOL_VERSION, 3);
if(@ldap_bind($ldap_con,$ldap_dn,$ldap_password))
echo "Authenticated";
else
echo "Invalid Credential";
?>发布于 2019-10-15 21:25:31
问题是你是如何构建$ldap_dn的。帐户的可分辨名称始终以CN=开头。AD不像其他LDAP实现那样使用uid。
但是帐户的DN也不能保证为CN=username。“用户名”是AD中的sAMAccountName属性。
事实是,在这一点上,您不知道帐户的DN是什么。但好消息是你不需要知道。AD允许您仅使用用户名进行身份验证,但是,您可能需要包括域名。
试试这个:
$ldap_dn = $_POST["username"]或者这样(用你的域名替换DOMAIN ):
$ldap_dn = "DOMAIN\\".$_POST["username"]https://stackoverflow.com/questions/58391571
复制相似问题