身份验证是如何建立在 LDAP 上的?

Posted

技术标签:

【中文标题】身份验证是如何建立在 LDAP 上的?【英文标题】:How was authentication built on LDAP? 【发布时间】:2015-02-18 17:09:14 【问题描述】:

我多次在基于 LDAP 的应用程序中集成身份验证。

我只是放了配置:URL(如ldap.company.com:389)、搜索库(如dc=europe,dc=com)和查询模式(如(uid=$)) 到库和框架。

但我总是想知道库和框架究竟是如何通过提供的登录名/密码来实际验证用户的。

似乎 LDAP 本身具有三种身份验证类型 - 匿名、纯密码和 SASL。因此,有时为了进行身份验证,您需要应用程序登录名/密码才能访问 LDAP 服务。

我不确定这个博客是否回答了这个问题:http://thecarlhall.wordpress.com/2011/01/04/ldap-authentication-authorization-dissected-and-digested/:

获取到 LDAP 服务器的连接。 以应用用户身份绑定。 搜索要进行身份验证的用户的 DN(专有名称)。 绑定为要使用步骤 3 中的 DN 进行身份验证的用户。

对吗?

这可以概括为(作为命令行中的实验):

$ ldapsearch -x -h ldap.company.com -s sub -b 'dc=europe,dc=com' "uid=XYZ"
....
dn: uid=XYZ,dc=sales,dc=europe,dc=com
...
$ ldapsearch -W -h ldap.company.com -D 'uid=XYZ,dc=sales,dc=europe,dc=com' \
    -s sub -b 'dc=europe,dc=com' "uid=XYZ"

是否有任何其他身份验证模式,例如使用特定 DN 属性值作为用户密码?或者userPassword 是该属性本身吗?

【问题讨论】:

【参考方案1】:

你的四个步骤基本正确。 SASL 是一种外部身份验证机制,其中身份验证“移交”给 SASL 机制。 RFC 4513 说明了身份验证和安全机制。

-吉姆

【讨论】:

以上是关于身份验证是如何建立在 LDAP 上的?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 LDAP over TLS 对 Active Directory 进行身份验证?

Windows 7 上的 Python-LDAP 身份验证

如何在 Spring Security 中使用 LDAP 身份验证创建令牌

如何在 Spring Boot 中简化 LDAP 身份验证以减少数据加载过程时间?

如何使用带有 LDAP 身份验证的 Apache Shiro 添加角色授权

LDAP 身份验证不适用于 websvn