GWT认证的用户会话

时间:2011-10-16 13:44:26

标签: java session gwt openid

我的网络应用程序由两部分组成:

  1. 完成所有工作的GWT应用程序。
  2. 手工servlet旨在处理OpenID身份验证工具。
  3. 我需要将p.2连接到第1页。我正在阅读LoginSecurityFAQ,所以我想确认一下我的理解是否正确。

    1. 一旦OpenID提供商确认用户确定并且给我了它的身份,我就应该注册会话。
    2. 要“注册”会话,我应该在我的数据库中的某个位置存储OpenID身份和会话ID之间的映射(identity =“https://www.google.com/accounts/o8/id?id=wwyruiwncuyrwieruyfakefakefakefakefakefakefakefakefakefake和会话ID是一个大的随机字符串,如“HiuhoiuhIUHOIUY87Y *& Ttgi6yUYGIuygUHGugyg ^ G6g”)。
    3. 该会话ID应存储在客户端的cookie中。
    4. 每次从客户端发送任何请求时,在服务器端我应该检查客户端的会话ID是否仍然足够新鲜(活着),我还应该使用它来解析客户端的身份,以备不时之需。
    5. 是不是?如果会话ID真的很大,它是否足够安全?

1 个答案:

答案 0 :(得分:1)

你的想法是正确的,我或多或少也喜欢这样做。

只是几点说明:

1)如果你想坚持身份,不要忘记将领域设置为正确。根据OpenID提供程序,您可能会在下次登录时为同一用户最终使用不同的标识。我认为Google的OpenID要求您使用服务器名称加端口:

openIdManager.setRealm("http://" + req.getServerName() + ":" + req.getServerPort());

2)为什么要创建自己的会话管理?这是相当多的额外工作,你可能最终写出一些不安全的东西。使用常见的http servlet会话。

3)如果使用http会话,则无需管理会话超时,但如果需要拦截所有GWT RPC调用,则正确的位置可能会覆盖RemoteServiceServlet实现中的 service 方法