如何将OpenID登录认证实现(Java)与JBoss集成

如何将OpenID登录认证实现(Java)与JBoss集成,java,jboss,login,openid,openid4java,Java,Jboss,Login,Openid,Openid4java,我已经实现了一个服务,它使用openid4java库执行OpenID登录身份验证所需的操作 应用程序流程如下所示 用于从用户获取OpenID的JSP页面 JSP页面的操作servlet Servlet获取openid参数,与服务交互以获取所需信息,从而将用户重定向到实际的openid提供者进行身份验证 提供给OpenID提供者的返回url是另一个servlet 这个servlet从开放id提供者发送的响应中检索所需的信息,然后和服务交互,检查用户是否通过开放id提供者的身份验证 若用户经过身份验

我已经实现了一个服务,它使用openid4java库执行OpenID登录身份验证所需的操作

应用程序流程如下所示

  • 用于从用户获取OpenID的JSP页面
  • JSP页面的操作servlet
  • Servlet获取openid参数,与服务交互以获取所需信息,从而将用户重定向到实际的openid提供者进行身份验证
  • 提供给OpenID提供者的返回url是另一个servlet
  • 这个servlet从开放id提供者发送的响应中检索所需的信息,然后和服务交互,检查用户是否通过开放id提供者的身份验证
  • 若用户经过身份验证,它会将用户重定向到主页
  • 如果您了解我的实施方法,请接受我的以下问题,否则请让我知道,以便我付出更多努力使其易懂

    询问 我正在使用JBoss5应用服务器。在上面的代码中,我只是简单地获取用户是否经过身份验证的信息,但我需要通知jboss它应该如何允许用户访问受限资源,即查看网页

    通常,我们使用自定义的登录模块类继承
    org.jboss.security.auth.spi.UsernamePasswordLoginModule
    进行基于数据库的身份验证(调用服务方法以获取数据库身份验证信息)。但是在这种情况下,我需要servlet作为服务、用户和OpenID提供者之间的通信通道,所以我应该如何将servlet和登录模块实现两者集成起来呢

    我可能面临的另一个问题是,我正在使用两个实现的servlet之间的会话来存储和检索
    DiscoveryInformation
    对象。我认为在用户未登录之前,会话将无法访问

    我所遵循的实现方法基于本文

    请帮帮我
    谢谢

    您的场景中缺少了一些东西:openid是唯一进行身份验证的方法还是用户也有用户名和密码?在第一种情况下,您可以重构自定义登录以扩展AbstractServerLoginModule并传递openId帐户信息。否则,您只需将两个身份验证系统链接起来

    对于会话问题,一切都应该正常,因为会话在浏览器第一次点击服务器时启动,直到由于不活动或程序重置而出现为止