我已经实现了一项服务,该服务使用 openid4java 库执行 OpenID 登录身份验证所需的操作。
申请流程如下
- 用于从用户获取 OpenID 的 JSP 页面
- JSP 页面的操作 servlet
- Servlet 获取 openid 参数,与服务交互以获取所需的信息,以将用户重定向到实际的 OpenID 提供者进行身份验证。
- 提供给 OpenID 提供者的返回 url 是另一个 servlet。
- 这个 servlet 从 open id 提供者发送的响应中检索所需的信息,然后与服务交互以检查用户是否通过了 open id 提供者的身份验证。
- 如果用户通过身份验证,则 servlet 将用户重定向到主页。
如果您了解我的实施方法,请接受我的以下查询,否则请告诉我,以便我付出更多努力使其易于理解
查询我正在使用 JBoss 5 应用程序服务器。在上面的代码中,我只是获取用户是否经过身份验证的信息,但我需要通知 jboss 一些它应该如何允许用户访问受限资源,即查看网页。
通常我们使用继承org.jboss.security.auth.spi.UsernamePasswordLoginModule
的自定义登录模块类进行基于数据库的身份验证(调用服务方法来获取数据库身份验证信息)。但在这种情况下,我需要 servlet 作为服务、用户和 OpenID 提供者之间的通信通道。那么我应该如何集成 servlet 和登录模块实现。
我可能面临的另一个问题是我正在使用两个已实现的 servlet 之间的会话来存储和检索DiscoveryInformation
对象。我认为在用户未登录之前无法访问会话。
我遵循的实现方法基于文章http://www.theserverside.com/news/1364125/Using-OpenID
请帮帮我谢谢