首页 文章

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

提问于
浏览
9

最近,我们一直致力于一个项目,该项目将我们的Tomcat Web服务器与移动设备上的一些特定服务集成在一起 . 在我们与设备交互(通过HTTP)期间我们可以做的事情之一是让设备提示用户提供凭据 . 用户输入凭据后,我们的服务器会收到一个HTTP帖子,其中包含标准HTTP摘要认证标头(带有nonce,realm,response等的授权标头) . 没有什么大惊喜 .

我们的服务器(按设计)实际上并不包含任何用户的密码 . 我们保留了密码的SHA512哈希值 . 对于本地用户,我们可以在登录到应用程序时开始存储“用户名:realm:password”的MD5 . 当您不存储密码时,这是处理摘要身份验证的常用方法吗?

更重要的是,我们通过我们为验证编写的一些JNDI代码与LDAP服务器进行交互 . 由于设备被强制通过http与我们的服务器进行身份验证,而digest是唯一支持的授权方法,我们似乎无法找到使用摘要响应通过LDAP对用户进行身份验证的方法 . 从概念上讲,你能够“代理”摘要请求似乎并不正确 . 是否有工作流程允许这种类型的“通过”身份验证,如果是这样,它甚至是一个好主意?

谢谢!

1 回答

  • 2

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

    如果你不能使用HTTPS,或者服务器因为知道密码而不受信任,那就更复杂了,因为你无法从提供的MD5摘要中计算SASL响应(除非LDAP服务器使用DIGEST-MD5机制,这是过时的) . 在这种情况下,您可以代理LDAP服务器和客户端之间的整个SASL身份验证交换,并让客户端通过AJAX发送响应 . 然后,密码的知识将仅限于客户端 .

相关问题