我真的想知道领域的用法。 http://en.wikipedia.org/wiki/Basic_access_authentication说
现有浏览器保留身份验证信息,直到选项卡或 浏览器已关闭或用户清除历史记录。[1] HTTP没有 提供一种服务器引导客户端丢弃这些的方法 缓存凭据。这意味着没有有效的方法 服务器“注销”用户而不关闭浏览器或使用 URL中的会话。
在我的编码中
res.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
res.setHeader("WWW-Authenticate", "Basic realm=\"Alfresco\"");
因此网站请求基于领域的身份验证。一旦请求,用户名和密码就会保存在某个地方,并且在删除浏览器缓存或浏览历史记录之前,会保存此信息。
我的问题是有没有办法使用servlet在服务器中清除这样的凭据? 非常感谢任何帮助!!!
答案 0 :(得分:1)
服务器不会对浏览器有这样的控制级别。处理帐户详细信息泄露的唯一安全方法是立即使帐户无效或锁定,并使与其关联的所有用户会话到期。 Web服务器能够完成所有此类操作。
来自spec:
The realm attribute (case-insensitive) is required for all
authentication schemes which issue a challenge. The realm value
(case-sensitive), in combination with the canonical root URL of the
server being accessed, defines the protection space
它基本上意味着一旦您成功进行一次身份验证,浏览器就可以安全地假设使用相同的凭据可以访问同一根URL下的所有资源。没有标准方法可以在HTTP Basic凭据上设置客户端超时。
答案 1 :(得分:1)
你可能想看一下这个问题:How to force Jetty to ask for credentials with BASIC authentication after invalidating the session?
基本身份验证对我来说似乎毫无用处。
如果可以,您想切换到表单身份验证。