【问题标题】:How to clear credential with realm?如何使用领域清除凭据?
【发布时间】:2012-09-24 08:05:58
【问题描述】:

我很想知道realm的用法。 http://en.wikipedia.org/wiki/Basic_access_authentication

现有浏览器保留身份验证信息,直到选项卡或 浏览器关闭或用户清除历史记录。[1] HTTP 没有 为服务器提供一种方法来指导客户端丢弃这些 缓存的凭据。这意味着没有有效的方法 服务器“注销”用户而不关闭浏览器或使用 URL 中的会话。

在我的编码中

res.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
res.setHeader("WWW-Authenticate", "Basic realm=\"Alfresco\"");

因此站点请求基于领域的身份验证。一旦它请求,用户名和密码就会保存在某个地方,直到浏览器缓存或浏览历史被删除,这些信息才会被保存。

我的问题是有没有办法使用 servlet 清除服务器中的此类凭据? 非常感谢任何帮助!!!

参考: What is the exact uses of REALM term in security?

【问题讨论】:

  • 无法使用服务器端/客户端代码清除浏览器缓存,因为这将是一个巨大的安全漏洞。

标签: web-applications servlets web alfresco realm


【解决方案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 凭据上设置客户端超时没有标准方法。

【讨论】:

    【解决方案2】:

    你可能想看看这个答案:How to force Jetty to ask for credentials with BASIC authentication after invalidating the session?

    基本身份验证对我来说似乎没用。

    如果可以的话,您想切换到表单身份验证。

    【讨论】:

      猜你喜欢
      • 2014-11-21
      • 2016-03-08
      • 2021-09-29
      • 1970-01-01
      • 1970-01-01
      • 2021-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多