使用GWT进行离线验证

时间:2015-01-12 17:30:15

标签: java html5 authentication gwt

我遇到了this在线文档,从那里有关于GWT离线身份验证的幻灯片:

在线时,身份验证由服务器完成。

  • 然后,我们应该能够在没有服务器的情况下重新验证​​他/她。 小心 !本地存储完全不安全!
  • 因此,我们将用户的密码存储在浏览器中,盐渍和 用SHA-3加密。

    在项目中找到Java SHA-3实现,复制粘贴:
    String shaEncoded = SHA3.digest(String clearString);
    使用GWT 18的离线HTML5应用程序

问题是:

  1. 是否真的可以使用这种方法安全地验证GWT应用程序?如果它的SHA-3编码真的会让它安全吗?
  2. 当用户在浏览器中进行身份验证时,用户使用离线应用程序,比如保存内容,然后肯定它只是存储在HTML5存储中,但是用户信息可能嵌入在保存的任何内容中。因此,当应用程序重新联机时,它将同步到服务器。这怎么安全?服务器是否会接受它正在同步的东西是否来自正确的用户?

2 个答案:

答案 0 :(得分:0)

离线验证没有特殊情况。它与在线工作方式相同。

您的客户端浏览器中通常会有一个包含会话信息的Cookie,用于通过服务器对客户端进行身份验证(当您提出请求时)。 只要会话信息在后端持久存在,您就可以重新验证用户身份。

您不得在客户端存储密码。它足以在客户端(在Cookie或LocalStorage中)存储一些会话信息,并使用它来验证用户。

答案 1 :(得分:0)

实际上,您并未将密码本身存储在浏览器中,而是存储在SHA-3哈希中。 从加密角度来看,这种方法非常安全,因为检索原始密码并不容易。

请注意: 您的代码将存储在客户端,客户端上的每个源代码都可能被篡改。因此,恶意用户也可能能够阅读和利用它。 但是不要担心,对于离线可用应用程序的普通用例,这是足够安全的。

我会为长时间运行的服务器会话做些什么: 在服务器端生成随机ID,将其与用户关联并将其存储在数据库中。 将ID设置为客户端上的cookie,并在用户未登录时重新对用户进行身份验证,并且仍然在cookie中具有此ID。 要限制在服务器端添加超时值的时间,之后将丢弃ID。