我想对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只是一个例子,我的问题不是特定于语言的。
答案 0 :(得分:1)
如果您知道LDAP后端的哈希算法,则可以在javascript中哈希密码并将其仅发送到服务器。这意味着尽管您的LDAp身份验证脚本需要能够读取所有密码哈希值,然后才能将它们与预先加密的密码进行比较。
我认为,与通过TLS安全的HTTP连接(即Https)将明文密码发送到服务器(然后再通过TLS安全(ldaps或starttls)也使用默认绑定机制)的服务器相比,风险更高)。
并且由于您不使用绑定机制,因此,密码管理或锁定密码的所有可能的实施方式都已经由direcrory-admin管理员提供并实现和支持,因此现在也需要您自己重新构建和维护。