代理HTTP摘要认证请求到LDAP服务器

最近我们一直在研究一个项目,该项目将我们的Tomcat Web服务器与移动设备上的几项特定服务集成在一起。 我们在与设备进行交互(通过HTTP)过程中可以做的一件事就是让设备提示用户输入凭据。 在用户输入他们的凭证后,我们的服务器会收到一个包含标准HTTP摘要验证头的HTTP帖子(包含nonce,领域,响应等的授权头)。 那里没有什么大的惊喜。

我们的服务器(按设计)实际上并不包含任何用户的密码。 我们保留其密码的SHA512散列。 对于本地用户,我们可以在登录应用程序时开始存储“username:realm:password”的MD5。 当你不存储密码时,这是处理摘要验证的常用方式吗?

更重要的是,我们通过我们编写的用于验证的一些JNDI代码与LDAP服务器进行交互。 由于设备被强制通过http进行身份验证,摘要是唯一支持的授权方法,因此我们似乎无法找到使用摘要响应通过LDAP对用户进行身份验证的方法。 从概念上讲,你可以“代理”一个摘要请求并不是真的。 是否有一个工作流程可以实现这种“通过”身份验证,如果是这样的话,这甚至是一个好主意吗?

谢谢!


一种方法可能是在客户端和服务器之间通过HTTPS使用简单身份验证,然后在LDAP服务器上使用密码。 您不需要存储密码,因为它将在每次登录时由客户端提供。 例如,您可以根据存储的SHA512(password)验证密码,然后将清除密码传递给LDAP服务器。

如果您无法使用HTTPS,或者服务器不知道密码,则事情更加复杂,因为您无法从提供的MD5摘要计算SASL响应(除非LDAP服务器使用已过时的DIGEST-MD5机制) 。 在这种情况下,您可以代理LDAP服务器和客户端之间的整个SASL认证交换,并让客户端通过AJAX发送响应。 然后,密码的知识将被限制在客户端。

链接地址: http://www.djcxy.com/p/3797.html

上一篇: Proxy HTTP digest authentication request to LDAP server

下一篇: iOS: Authentication using XMLHttpRequest