首页 文章

LDAP是否在绑定后提供令牌,因此我不必每次都发送凭据?

提问于
浏览
5

我有一个Web应用程序(PHP,但无所谓) . 它使用LDAP进行身份验证(已经工作),并允许用户搜索LDAP(已经工作) .

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

我想要的是使用登录的LDAP帐户与绑定搜索的帐户相同 . 但我认为这样做的唯一方法是将用户的凭据存储在会话中(糟糕!) .

果壳:我可以获得“州/ Session / ??”来自LDAP的令牌,绑定()然后搜索()后续的http请求?

(顺便说一下,使用Active Directory . )

1 回答

  • 5

    基本LDAP不提供这样的东西 . 绑定时提供的凭据用于连接的其余部分,因此,如果您可以跨多个HTTP请求保持LDAP连接打开(并在您运行的许多服务器作业之间共享LDAP连接),那么您可以避免保存凭据 .

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

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

相关问题