面向Java Web应用程序的OpenID,第2部分 - 编程入门网
ate static void sendPlainTextResponse(Response response, Message message)
throws IOException {
response.setContentType("text/plain");
OutputStream os = response.getOutputStream();
os.write(message.keyValueFormEncoding().getBytes());
os.close();
}
在清单 7 中,OpenIdLoginPage 的构造器(示例应用程序中 OP 的入口点)首先分解请求。模式表明这是一个关联请求,所以它把关联机制委托给 openid4java,openid4java 的代码包装在 OpenIdProviderService.java 中。把关联响应发送回 RP。 RP 确认已经建立关联之后(实际上是 openid4java 确认之后),RP 向 OP 发送另一个调用。OP 再次分解并处理请求。大多数情况下,这是一个 checkid_authentication 请求。 面向Java Web应用程序的OpenID,第2部分(8)时间:2011-12-08 ibm J Steven Perry清单 8 给出 OpenIdLoginPage 构造器中的代码: 清单 8. openid4java 分解 checkid_authentication 请求
注意清单 8 中的两行粗体代码。在第一行粗体代码中,OpenIdLoginPage 发送回一个成功的响应。首先,OpenIdLoginPage 使用一个 Session 对象判断用户是否已经登录了(登录的用户应该不必再次登录)。如果用户已经登录了,它返回一个成功的身份验证消息。这就是示例应用程序中实现单点登录的方法。 如果用户还没有登录,Wicket 就创建一个登录表单,用户可以在其中输入用户凭证,见图 2: 图 2. OP 向未验证身份的用户显示登录屏幕 如果用户成功地验证身份,就发送回一个成功的响应并把一些信息(具体地说是 DiscoveryInformation 对象)存储在 Session 中。这就是单点登录的底层机制。 现在,把浏览器重新定向到 RP 的 "return-to" URL 并发送成功的身份验证响应。 面向Java Web应用程序的OpenID,第2部分(9)时间:2011-12-08 ibm J Steven PerryRP 授予访问权 如果用户成功地登录,OP 会发送回一个成功的 AuthResponse 消息。现在,由 RP 授予用户访问权。如果用户通过了 OP 的身份验证,示例应用程序会自动地授予访问权。另外,OP 发送 RP 请求的所有用户信息。在图 3 中,RP 在它的注册屏幕上显示信息: 图 3. 示例应用程序的注册页面显示从 OP 获取的信息 结束语 在本文中,您看到了如何使用 OpenID 身份验证 规范为伙伴应用程序集群建立单点登录身份验证。如果伙伴应用程序可以相互信任,就可以以其中的一个伙伴作为 OpenID 提供者 (OP),实现单点登录身份验证。 使用 OpenID 进行身份验证和数据交换可以确保所有参与的伙伴应用程序在身份验证和授权方面保持一致。OpenID 是一个得到广泛采用的标准,有许多资源可以帮助您学习和调试 OpenID 身份验证 实现。 如果想详细了解本文中实现的单点登录架构,请研究源代码。只需把它构建为 WAR,部署到 Tomcat,然后运行它!一定要打开 TRACE 日志记录,查看日志输出,日志会揭示本文中没有讨论的应用程序细节。 与任何规范一样,OpenID |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |