快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
AX 允许 OpenID 依赖方和提供者交换不受限制的信息,只要 RP 和 OP 都支持 AX 扩展。

简单地说,RP 通过消息请求 OP 提供特定的信息,OP 在消息中发送回这些信息。这些消息编码在浏览器重定向到的 URL 中,但是 openid4java 使用对象让代码可以使用这些信息。

RP 使用 FetchRequest 类发出 AX 请求。得到消息对象的引用之后,添加它希望从 OP 返回的属性,见清单 5:

清单 5. 包含属性的 RP FetchRequest

AuthRequest ret = obtainSomehow(); // Create AX request to get favorite color FetchRequest fetchRequest = FetchRequest.createFetchRequest(); fetchRequest.addAttribute("favoriteColor",     "http://makotogroup.com/schema/1.0/favoriteColor",     false); ret.addExtension(fetchRequest);

当 OP 把信息发送回 RP 时,使用相同的构造,见清单 6:

清单 6. OP 发送回请求的属性

if (authRequest.hasExtension(AxMessage.OPENID_NS_AX)) {  MessageExtension extensionRequestObject =    authRequest.getExtension(AxMessage.OPENID_NS_AX);  FetchResponse fetchResponse = null;  Map<String, String> axData = new HashMap<String, String>();  if (extensionRequestObject instanceof FetchRequest) {   FetchRequest axRequest = (FetchRequest)extensionRequestObject;   ParameterList parameters = axRequest.getParameters();   fetchResponse = FetchResponse.createFetchResponse(     axRequest, axData);   if (parameters.hasParameter("type.favoriteColor")) {     axData.put("favoriteColor", registrationModel.getFavoriteColor());    fetchResponse.addAttribute("favoriteColor",      "http://makotogroup.com/schema/1.0/favoriteColor",      registrationModel.getFavoriteColor());   }    authResponse.addExtension(fetchResponse);  } else {   // ERROR  } }

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

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

定义的每个属性有一个简单的名称和相关联的 URI。在这里,属性的简单名称是 FavoriteColor,它的 URI 是 http://makotogroup.com/schema/1.0/favoriteColor。

另外,属性必须能够转换为字符串 (以这种方式发送数据字段的示例见示例应用程序)。在定义要在 RP 和 OP 之间交换的属性时,两端对于属性的定义必须一致;除此之外,没有任何限制!

现在,讨论下一个应用程序交互步骤。

OP 验证用户的身份

在上一步中,身份验证请求已经到达了 OP 的端点 URL。接下来,OP 分解请求以决定后续操作。OP 打开请求,获取它的模式,模式可能是关联或身份验证。

清单 7. OP 处理关联请求

//From (OpenIdLoginPage''s constructor):  public OpenIdLoginPage(PageParameters parameters) throws IOException {   super(parameters);   . . .   if ("associate".equals(mode)) {     OpenIdProviderService.processAssociationRequest(getResponse(), requestParameters);    }   . . . } //From (OpenIdProviderService):   public static void processAssociationRequest(Response response, ParameterList request)     throws IOException {   Message message = getServerManager().associationResponse(request);   sendPlainTextResponse(response, message);  }  priv

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号