快速业务通道

面向Java Web应用程序的OpenID,第1部分 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
Request   SRegRequest sRegRequest = SRegRequest.createFetchRequest();   sRegRequest.addAttribute("email", false);   sRegRequest.addAttribute("fullname", false);   sRegRequest.addAttribute("dob", false);   sRegRequest.addAttribute("postcode", false);   ret.addExtension(sRegRequest);  } catch (Exception e) {   String message = "Exception occurred while building " +            "AuthRequest object!";   log.error(message, e);   throw new RuntimeException(message, e);  }  return ret; }

清单 4 中第一行粗体代码显示了对 ConsumerManager.authenticate() 的调用,它其实不执行身份验证调用。它仅接受成功完成与 OP 的发现交互之后返回的 DiscoveryInformation 对象(参见 清单 3),以及身份验证成功之后用户代理(浏览器)指向的 URL。

第二行粗体代码显示了如何通过对 SRegRequest.createFetchRequest() 的静态方法调用创建 SReg 请求。然后通过对 SRegRequest 对象上 addAttribute() 的调用, 您需要的属性作为简单注册扩展(Simple Registration Extension)的一部分从 OP 返回。最后,通过调用 addExtension() 将扩展添加到 AuthRequest 。

openid4java 使所有这些动作都很直观。此时,浏览器指向负责验证用户身份的 OpenID 提供者,用户将在此页面输入其密码。参见 OpenIdRegistrationPage.java 查看执行重定向的 Wicket UI 代码。 图 2 显示了处理身份验证请求的 myOpenID 服务器截图。

图 2. 处理身份验证请求的 myOpenID

此时,您需要确保有代码能处理运行于 URL 上的请求,该 URL 被指定为 “return-to” URL(参见 清单 4)。示例应用程序的 return-to URL 在 RegistrationService.getReturnToUrl() 中被硬编码。OpenIdRegistrationSavePage 的构造函数破解 Web 请求以查明它是否从 OP 返回。如果该请求确实是从 OP 返回,它必须得到验证。

面向Java Web应用程序的OpenID,第1部分(8)

时间:2011-12-08 ibm J Steven Perry

验证

清单 5 显示的代码用于查明一个请求是否来自 OP。如果是,将会有一个参数 is_return,该参数的值为 true。 如果情况是这样的,那么 openid4java 用于验证请求(实际上是来自 OP 的响应)并取出 清单 4 中请求的属性。

清单 5. 处理 return-to URL

public OpenIdRegistrationSavePage(PageParameters pageParameters) {  RegistrationModel registrationModel = new RegistrationModel();  if (!pageParameters.isEmpty()) {   String isReturn = pageParameters.getString("is_return");   if (isReturn.equals("true")) {    MakotoOpenIdAwareSession session =     MakotoOpenIdAwareSession)getSession();    DiscoveryInformation discoveryInformation =     session.getDiscoveryInformation();    registrationModel =     RegistrationService.processReturn(discoveryInformation,      pageParameters,      RegistrationService.getReturnToUrl());    if (registrationModel == null) {      error("Open ID Confirmation Failed.");     }    }   }   add(new OpenIdRegistrationInformationDisplayForm("form",     registrationModel));  }

在这段代码中,Wicket 页面的构造函数首先确定请求来自于 OP,是对先前身份验证请求的响应。它使用一种定

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号