面向Java Web应用程序的OpenID,第2部分 - 编程入门网
id4java 为 Java Web 应用程序注册系统编写依赖方。在本文中,我们按相似的过程编写 OpenID 提供者。openid4java 确保 OpenID 提供者符合 OpenID 身份验证规范,因为所有 OpenID 基础设施已经编写好了。
关于示例应用程序 示例应用程序的目的是演示 OpenID RP 和 OP 如何协作以防止未授权的资源访问。示例应用程序的流程非常明确: 用户试图访问受保护的资源。 RP 请求 OP 验证用户的身份。 如果用户还没有登录的话,OP 验证用户的身份。 RP 判断登录的用户是否有权访问受保护的资源。 示例应用程序包含 RP 和 OP 的代码,这样您可以看到它们的协作方式。在真实的场景中,不会把这两个组件部署在同一个应用程序中 — 完全没有理由这么做! — 但是把它们放在一起有助于研究它们的交互方式。 示例应用程序中的代码清单 本节中的代码清单演示 OP(和 RP)如何通过调用 openid4java API 使用 OpenID。您可能会注意到示例应用程序实际上需要的代码非常少。openid4java 确实大大简化了开发。RP 使用的代码基本上与在 第 1 部分 中看到的代码差不多,关于 RP 内部原理的更多信息参见第 1 部分。我会指出几处差异(主要与第 1 部分中没有讨论的 AX 相关)。 与为第 1 部分编写的应用程序一样,这个应用程序也使用 Wicket 作为 UI。为了减少示例应用程序中 Wicket 的内存占用量,我把 OP 用来调用 openid4java 的代码隔离在它自己的 Java 类 OpenIdProviderService 中(在 com.makotogroup.sample.model 中)。 OpenIdProviderService.java 包含几个方法,它们与 openid4java API 的使用方法对应: getServerManager() 配置并返回 openid4java ServerManager 类的引用。 getOpEndpointUrl() 返回 OP 从 RP 接收请求的位置的端点 URL。 processAssociationRequest() 应 RP 的请求使用 openid4java 关联 OP。 sendDiscoveryResponse() 把发现响应发送给 RP。 createAuthResponse() 创建在处理身份验证请求之后发送给 RP 的 openid4java AuthResponse 消息。 buildAuthResponse() 是处理 OpenID Simple Registration 和 Attribute Exchange 请求的核心方法。 启动示例应用程序的方法是,运行 Ant [REF] 并构建 WAR 目标,然后把它复制到 Tomcat webapps 目录并启动 Tomcat。 面向Java Web应用程序的OpenID,第2部分(3)时间:2011-12-08 ibm J Steven PerryOpenID 身份验证:步骤 当用户试图访问依赖方 (RP) 的受保护资源时,RP 要确认用户的身份是真实的(身份验证),然后决定是否授予用户访问权(授权)。本文的重点是身份验证,所以如果 OpenID 提供者 (OP) 验证了用户的身份,示例应用程序就会授予对受保护资源的访问权。在真实的场景中,RP 还会执行某种授权。 在运行示例应用程序时,会看到一个包含受保护资源的屏幕。这个过程中会发生以下事件,下面几节详细讨论这些事件: 请求访问受保护资源:用户试图访问 RP 网站上的受保护资源。 RP 执行发现:RP 向 OP 发送发现请求以建立连接和执行关联。 OP 响应发现请求:OP 通过 SReg、Attribute Exchange (AX) 或 OpenID Provider Authentication Policy (AP) 扩展发送回一个 XRDS (eXtensible Resource Descriptor Sequence),以此响应发现请求。XRDS 确认这个 OP 是用户的 OpenID 服务提供者。 RP 请求验证用户的身份:RP 向 OP 询问是否可以验证用户的身份。如果登录成功,RP 使用 SReg 和/或 AX 扩展请求某些用户信息。 OP 验证用户的身份:如果用户没有登录或者用户会话无效,就要求用户提供登录凭证。如果身份验证成功,OP 就通知 RP 并发送通过 SReg 和/或 AX 请求的数据。 RP 授予访问权:授予用户对受保护资源的访问权。在真实的场景中,大多数 RP 会 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |