首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AD/LDAP:单击按钮登录后“用户名/密码无效”

AD/LDAP:单击按钮登录后“用户名/密码无效”
EN

Stack Overflow用户
提问于 2019-10-15 17:34:33
回答 1查看 912关注 0票数 0

目前,我负责登录页面。此登录页需要来自Active Directory (AD)的身份验证。因此,我使用LDAP方法。尽管我输入了正确的用户名和密码,但仍然显示消息"Invalid username or password“。

下面是基本的php代码。

home.php

代码语言:javascript
复制
   <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

代码语言:javascript
复制
    <?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";
    ?>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-15 21:25:31

问题是你是如何构建$ldap_dn的。帐户的可分辨名称始终以CN=开头。AD不像其他LDAP实现那样使用uid

但是帐户的DN也不能保证为CN=username。“用户名”是AD中的sAMAccountName属性。

事实是,在这一点上,您不知道帐户的DN是什么。但好消息是你不需要知道。AD允许您仅使用用户名进行身份验证,但是,您可能需要包括域名。

试试这个:

代码语言:javascript
复制
 $ldap_dn = $_POST["username"]

或者这样(用你的域名替换DOMAIN ):

代码语言:javascript
复制
 $ldap_dn = "DOMAIN\\".$_POST["username"]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58391571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档