- 我为摘要身份验证制作了一个 Http 模块。在服务器上,对于页面的每个请求,此模块都会检查是否存在“身份验证”标头。如果此标头不存在,用户将收到 401 消息。
- 在客户端,我使用 jQuery 插件进行 Digest 身份验证。
要知道我有流动的功能:
- 用户在两个输入字段中输入用户名和密码(不是在浏览器 Http Authentication 提示中)
- 使用 jQuery,我正在对服务器上的某些受保护页面进行 ajax 调用。此 ajax 调用基于 Digest Http 协议。这意味着我正在添加带有用户名、noncecount、clientnonce、MD5 哈希密码等的身份验证标头。
- 然后服务器响应 200 消息:)
如果用户转到另一个页面,它将得到“401 访问被拒绝”,因为该请求中没有身份验证标头。这就是问题所在。
- 如果我使用标准摘要协议,那么浏览器会自动在每个请求中添加授权标头,我没有这个问题。但我之所以使用这种方式,是因为我没有让用户在浏览器 Http Authentication 对话框中填写他的凭据。我们希望有我们的自定义对话框。在 jQuery DigestJ 插件中,标头称为“authenticate”而不是“authorization”,协议称为 DigestJ 而不是 Digest。这样,当服务器响应 401 消息时,我不会让浏览器 Http Dialog 输入凭据。我们不能使用表单身份验证。
- 我可以使用 jQuery 会话插件在客户端存储用户凭据,但是如何修改每个请求的 Http 标头?我需要添加“身份验证”标头并从会话中插入凭据。