安全的LDAP身份验证?

时间:2018-06-24 16:08:06

标签: web-services authentication ldap

我想对Active Directory服务器上的用户进行身份验证以访问Web服务器。但是我不希望将密码明确发送到Web服务器。

我发现的所有解决方案都使用带有普通密码的POST请求,例如以下示例:

<?php

// using ldap bind
$ldaprdn  = 'uname';     // ldap rdn or dn
$ldappass = 'password';  // associated password

// connect to ldap server
$ldapconn = ldap_connect("ldap.example.com")
    or die("Could not connect to LDAP server.");

if ($ldapconn) {

    // binding to ldap server
    $ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);

    // verify binding
    if ($ldapbind) {
        echo "LDAP bind successful...";
    } else {
        echo "LDAP bind failed...";
    }

}

?>

是否有一种方法可以在客户端对哈希密码进行哈希处理,然后将令牌发送到用于对LDAP服务器进行身份验证的后端?

PHP只是一个例子,我的问题不是特定于语言的。

1 个答案:

答案 0 :(得分:1)

如果您知道LDAP后端的哈希算法,则可以在javascript中哈希密码并将其仅发送到服务器。这意味着尽管您的LDAp身份验证脚本需要能够读取所有密码哈希值,然后才能将它们与预先加密的密码进行比较。

我认为,与通过TLS安全的HTTP连接(即Https)将明文密码发送到服务器(然后再通过TLS安全(ldaps或starttls)也使用默认绑定机制)的服务器相比,风险更高)。

并且由于您不使用绑定机制,因此,密码管理或锁定密码的所有可能的实施方式都已经由direcrory-admin管理员提供并实现和支持,因此现在也需要您自己重新构建和维护。