java - GWT 验证的用户 session

标签 java session gwt openid

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

  1. GWT 应用程序可以完成所有工作。
  2. 手工制作的 servlet 旨在处理 OpenID 身份验证工具。

我需要将 p.2 连接到 p.1。我正在阅读LoginSecurityFAQ ,所以我想在这里确认一下我的理解是否正确。

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

是吗?如果 session ID 很大,是否足够安全?

最佳答案

你的想法是对的,我也或多或少是这样做的。

几点说明:

1) 如果您想保留身份,请不要忘记正确设置领域。否则,根据 OpenID 提供商的不同,同一用户下次登录时可能会得到不同的身份。我认为 Google 的 OpenID 要求您使用服务器名称加端口:

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

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

3) 如果您使用 http session ,则无需管理 session 超时,但如果您需要拦截所有 GWT RPC 调用,则正确的位置可能是重写 RemoteServiceServlet 实现中的 service 方法.

关于java - GWT 验证的用户 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7784654/

相关文章:

java - 如何使用正则表达式模式限制字符串中的 '.' 或 ','

php - 如何使用 $_session[] 的用户名和密码进行搜索?

java - GWT 在服务器启动时执行 Liquibase 脚本

java - 执行器服务缺少一些任务

java - 将文本字段键设置为jsp变量并将其应用于sql查询

java - 带有 gridview 的 recyclerview 用不同的索引号重复项目两次

java - GWT Gin : Can Gijector return generic of unknown type?

python - 在 Selenium 中恢复 Firefox session

java - GWT平台登录+ session 管理

eclipse - GWT:对多个页面使用相同的 UI 模板?