簡體   English   中英

AD/LDAP:點擊按鈕登錄后出現“無效的用戶名/密碼”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM