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

Lan*_*ing 6 ldap

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

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

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

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

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

Jos*_*ley 6

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

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

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

  • 经过身份验证的身份不用于"其余连接",在连接上使用经过身份验证的身份,直到连接上的下一个BIND,假设LDAPv3正在使用中. (3认同)