【发布时间】:2011-12-04 04:43:04
【问题描述】:
我正处于测试将使用 LDAP 进行用户身份验证的应用程序的准备阶段。对于这项工作,您可能有哪些提示或建议?
我对 LDAP 不是很了解,但我相信将使用的只是应用程序客户端使用用户名调用 LDAP 并查看密码是否匹配。这是一个准确的描述吗?另外,要测试哪些边缘情况?谢谢。
【问题讨论】:
-
除了其他答案之外,不要忘记检查来自服务器的响应中的响应控件。
我正处于测试将使用 LDAP 进行用户身份验证的应用程序的准备阶段。对于这项工作,您可能有哪些提示或建议?
我对 LDAP 不是很了解,但我相信将使用的只是应用程序客户端使用用户名调用 LDAP 并查看密码是否匹配。这是一个准确的描述吗?另外,要测试哪些边缘情况?谢谢。
【问题讨论】:
LDAP 身份验证通常(但不总是)一个两步过程:首先,应用程序执行 LDAP 查询以定位用户尝试对其进行身份验证的帐户的“可分辨名称”(dn),然后尝试登录in(“绑定”,在 LDAP 用语中)作为 dn,使用用户提供的密码。
如果“绑定”尝试成功,则应用程序知道密码正确。 (出于明显的安全原因,LDAP 服务器可能未配置为允许应用程序实际提取密码并自行进行比较)。
启用 LDAP 的应用程序通常需要一种配置方式:
您很可能需要支持 SSL,因此您不会将用户密码以明文形式发送到 LDAP 服务器。
【讨论】:
这在很大程度上取决于您的技术。
如果您直接查询 ldap,您必须关心性能,例如您的查询速度有多快,您必须多久执行一次,以及您的服务器大小是否合适。
如果您使用某种提供 SSO 的容器,那么这些容器通常会具有一些缓存功能等。您必须检查一切是否正常。
【讨论】:
您需要 ldap_connect 和 ldap_bind 函数。此外,一旦您与 ldap 服务器绑定,您就可以在 ldap 上搜索条目并获取用户信息。
【讨论】:
您一定要检查编码是否被正确处理(尝试变音符号或密码中的其他奇怪的东西)。
并注意使用您关心的 LDAP 服务器、Active Directory、OpenLdap、Apaches LDAP 服务器和其他一些服务器进行测试,它们可能会显示不同的行为。
还要检查客户端处理“推荐”是否正确,例如当您尝试在不同域中查找用户时(例如,安装了 forrest trust 的两个 AD forrest)。
【讨论】: