面向Java Web应用程序的OpenID,第2部分 - 编程入门网
在授予访问权之前检查用户的授权。
下面详细讨论每个步骤。 为什么要使用 AX 扩展? 这个示例应用程序使用 OpenID SReg 和 AX 扩展在 OP 和 RP 之间传递用户信息。这两个扩展都让 OP 和 RP 可以高效地通信。SReg 提供有限的可交换属性,而 AX 实际上可以用来交换任何信息,只要 OP 和 RP 都把它定义为属性。在集群场景中,每个可信的应用程序 (RP) 还可能定义自己的定制的 “厂商扩展”。这是改进 OP 和 RP 之间的通信的另一种方法。本文后面会进一步讨论 AX 扩展。 请求访问受保护资源 示例应用程序 包含一个受保护资源。当应用程序启动并访问 RP URL (http://localhost:8080/openid-provider-sample-app/) 时,装载以下页面: 图 1. 示例应用程序的主页面 面向Java Web应用程序的OpenID,第2部分(4)时间:2011-12-08 ibm J Steven Perry当用户单击这个链接时,执行清单 1 中的代码: 清单 1. 包含受保护资源的应用程序主页面
请注意清单 1 中的粗体代码。当用户单击图 1 所示的链接时,Wicket 把用户带到 OpenIdRegistrationPage(资源)。这时,调用链接的目的地,这会运行 OpenIdRegistrationPage 类的构造器。这个类有两个作用: 作为初始调用的入口点。 作为身份验证成功之后从 OP “回调” 的目标。 在发出初始调用以访问这个页面时,没有传递 Wicket PageParameters,RP 知道需要请求 OP 验证用户的身份。 RP 执行发现 为了在 RP 和 OP 之间通信,RP 必须对 OP 执行发现。从编程的角度来看,这很简单(同样是由于 openid4java 简化了编程),但这是一个重要的步骤,所以我把代码分解出来讨论一下。 RP 使用下面的代码(取自 OpenIdRegistrationPage 的构造器)发送发现请求:
在这段代码中,RP 做两件事: 对 OP 的端点 URL 执行发现。 把本身与 OP 关联起来。(对 Diffie-Hellman 密钥交换和关联期间发生的其他活动的详细解释参见 第 1 部分。) 接下来,由 OP 处理 RP 的发现请求。 面向Java Web应用程序的OpenID,第2部分(5)时间:2011-12-08 ibm J Steven PerryOP 响应发现请求 请记住,在示例应用程序的 RP 和 OP 端都运行 openid4java。因此,在发现 OP 的过程中,openid4java 的 RP 端向 OP 的端点 URL 发送一个空的请求。端点 URL 是联系 OP 的位置,OP 在这里接收所有来自 RP 的请求。OP 必须处理这个请求。看一下 OpenIdProviderService.getOpEndpointUrl(),会注意到端点 URL 是 http://localhost:8080/openid-provider-sample-app/sample/OpenIdLoginPage。 当 RP 向 OP 发送空的请求时,Wicket 构造 OpenIdLoginPage 并运行它的构造器,见清单 2: 清单 2. OP 入口点
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |