[英]AD/LDAP: “Invalid Username/Password” after click button login
目前,我做登錄頁面。 此登錄頁面需要來自 Active Directory (AD) 的身份驗證。 因此,我使用 LDAP 方法。 雖然我輸入了正確的用戶名和密碼,但它仍然顯示消息“無效的用戶名或密碼”。
以下是基本的 php 代碼。
主頁.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>
</html
ldap.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";
?>
問題是您如何構建$ldap_dn
。 帳戶的專有名稱始終以CN=
開頭。 AD 不使用uid
,就像其他 LDAP 實現可能一樣。
但也不能保證帳戶的 DN 為CN=username
。 “用戶名”是 AD 中的sAMAccountName
屬性。
事實是,此時您不知道帳戶的 DN 是什么。 但好消息是你不需要知道。 AD 允許您僅使用用戶名進行身份驗證,但是,您可能需要包含域名。
嘗試這個:
$ldap_dn = $_POST["username"]
或者這個(用您的域名替換DOMAIN
):
$ldap_dn = "DOMAIN\\".$_POST["username"]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.