有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java GWT身份验证用户会话

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

  1. 完成所有工作的GWT应用程序
  2. 手工servlet旨在处理OpenID身份验证功能

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

  1. 一旦OpenID提供者确认用户是正常的并给了我它的身份,我就应该注册会话
  2. 要“注册”会话,我应该在数据库的某个地方存储OpenID标识和会话标识(标识=”https://www.google.com/accounts/o8/id?id=wwyruiwncuyrwieruyfakefakefake会话id是一个大的随机字符串,如“hiuhoiuhiuuy87y*&;TTGI6YUYGUYGUGGGGG^G6g”)
  3. 该会话id应存储在客户端的cookie中
  4. 每次从客户端发送任何请求时,在服务器端,我都应该检查客户端的会话id是否仍然足够新鲜(活动),并且还应该使用它来解析客户端的标识,以备需要

是这样吗?在会话ID非常大的情况下,它是否足够安全


共 (1) 个答案

  1. # 1 楼答案

    你的想法是对的,我差不多也是这样做的

    请注意:

    1)如果你想保持身份,别忘了设置正确的领域。根据OpenID提供者的不同,您可能会在下次登录时为同一用户提供不同的身份。我认为谷歌的OpenID要求你使用服务器名和端口:

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

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

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