ldap - LDAP 是否在绑定(bind)后提供 token ,因此我不必每次都发送凭据?

标签 ldap

我有一个网络应用程序(PHP,但并不重要)。它使用 LDAP 进行身份验证(已经运行),并且允许用户搜索 LDAP(已经运行)。

但是在搜索时,我使用通用进程帐户来绑定(bind)(),然后运行搜索()。

我想要使用登录的 LDAP 帐户与绑定(bind)搜索的帐户相同。但我认为做到这一点的唯一方法是将用户的凭据存储在 session 中(不好!)。

简而言之:我可以获得“状态/ session /??”来自 LDAP 的 token ,绑定(bind)(),然后在后续的 http 请求中搜索()?

(顺便说一句,使用 Active Directory。)

最佳答案

Basic LDAP 不提供类似的功能。您在绑定(bind)时提供的凭据将用于连接的其余部分,因此,如果您可以在多个 HTTP 请求中保持 LDAP 连接打开(并在您运行的多个服务器作业之间共享 LDAP 连接),那么您可以避免保存凭据.

有各种 LDAP 扩展(包括 Active Directory 中的几个),因此其中之一可能会添加跨连接 session ,但如果是这样,我不知道。

作为一种解决方法,由于 Active Directory 支持 GSSAPI 并且由于 Kerberos 的工作方式,您应该能够使用用户的凭据来请求用于访问 LDAP 的 Kerberos 票证,然后将该票证存储为您的“状态/ session /??” token 。此 Kerberos 票证仅对访问 LDAP 有效,并且会自动过期,因此这可以避免在 session 中存储用户凭据的陷阱。我不知道您的 LDAP 库是否支持 GSSAPI,并且是否会给您足够的控制权来执行此操作。

关于ldap - LDAP 是否在绑定(bind)后提供 token ,因此我不必每次都发送凭据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1488401/

相关文章:

ldap - 在搜索过滤器中使用 DN

java - 使用 Java 进行 LDAP 身份验证,需要解释

c# - 性能问题 - 从 .net 中的大型 Active Directory 组添加/删除用户

php - LDAP 身份验证的 DN 语法无效

linux - Openldap + 动态列表 + posixGroup

java - 使用 Java 从 LDAP 检索所有用户及其角色

php - Active Directory 与 Wordpress 和 LDAP 集成

active-directory - 单行 LDAP 查询,枚举来自超组内的组的用户

java - 如何使用 xml 配置文件、JAVA、Spring security 通过 LDAP 对用户进行身份验证

active-directory - SonarQube LDAP 身份验证似乎已加载但不允许通过域用户登录