是否可以验证LDAP凭据而不将LDAP密码存储为纯文本

时间:2017-08-29 10:37:36

标签: database authentication active-directory ldap

我正在编写一个依赖于LDAP登录的应用程序。当用户使用其有效的LDAP凭据登录系统时,将授予API令牌以用于从该点开始与应用程序交互(API驱动的Web应用程序)。但是,需要设置应用程序,以便每当从LDAP服务器删除用户时,也会撤消API密钥。我的计划是设置一个cronjob来定期检查LDAP凭据是否仍然有效。因此,我需要保存这些凭据,以便我以后可以检查它们。我意识到,这意味着我必须将用户提供的密码保存为纯文本,否则我将无法将它们发送到LDAP服务器进行验证。

我个人对LDAP没有太多经验,所以我想知道是否有任何解决方法。我考虑过存储密码的哈希值,并想知道是否有可能通过使用密码的哈希而不是密码本身验证凭证,但后来很快意识到这不会真的更安全,因为如果数据库会受到损害,如果密码是否被散列,如果它们都可以用于验证,则无关紧要。唯一的好处是,可能更难检查用户是否对其他服务使用相同的密码。

所有建议都表示赞赏。谢谢!

2 个答案:

答案 0 :(得分:1)

在某些系统上,有一些方法可以在文件系统上以加密(非散列)方式存储密码。

您当然可以编写自己的方法来加密和解密凭据。

您可以使用操作系统控件限制对凭据位置的访问。

但通常,某处必须有以明文形式存储的凭据。

面对现实,如果有人对服务器有“root”访问权限,那么“可能”无法阻止他们访问LDAP数据。

答案 1 :(得分:0)

您可以在LDAP目录中存储散列密码。

LDAP的绑定操作将告诉您提供的凭据是否正确。

如果用户被删除,绑定操作将自然失败,因为将不再有用于验证凭据的条目。

您可以保存(在您的Web API后端中)与生成的API令牌对应的用户LDAP DN,并定期检查您的目录以删除导致目录中不存在的条目的每个令牌。