快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
er   List<DiscoveryInformation> discoveries =    consumerManager.discover(userSuppliedIdentifier);   // Pass the discoveries to the associate() method...   ret = consumerManager.associate(discoveries);  } catch (DiscoveryException e) {   String message = "Error occurred during discovery!";   log.error(message, e);   throw new RuntimeException(message, e);  }  return ret; }

openid4java 进行 OpenID 身份验证所用的核心类是 ConsumerManager。openid4java 对于该类的使用有严格的准则。它将该类作为静态类成员存储并通过 getConsumerManager() 方法予以访问(参见示例应用程序中的 RegistrationService.java 了解更多信息)。

openid4java 允许使用一行代码(清单 2 中粗体部分)规范化用户提供的标识符并执行发现。返回的是 DiscoveryInformation 对象的 java.util.List。可将这些对象看作不透明对象。一定要保留这些对象,因为当您的 RP 实现选择构建与 OP 的关联时,要用到它们(如示例应用程序)。

关联

关联是 RP 和 OP 建立共享密钥(通过 Diffie-Hellman 密钥交换)的一种方式,能使它们之间的交互更安全可信。关联不是 OpenID 规范所必需的。关联是从 RP 代码中执行的,仅需调用 ConsumerManager 上的 associate() 方法即可,如清单 3 所示。

清单 3. 使用 openid4java 建立关联

public static   DiscoveryInformation performDiscoveryOnUserSuppliedIdentifier(    String userSuppliedIdentifier) {  DiscoveryInformation ret = null;  ConsumerManager consumerManager = getConsumerManager();  try {   // Perform discover on the User-Supplied Identifier   List<DiscoveryInformation> discoveries =    consumerManager.discover(userSuppliedIdentifier);   // Pass the discoveries to the associate() method...   ret = consumerManager.associate(discoveries);  } catch (DiscoveryException e) {   String message = "Error occurred during discovery!";   log.error(message, e);   throw new RuntimeException(message, e);  }  return ret; }

这种方法返回 DiscoveryInformation 对象,它用来描述发现的结果(您可将该对象看作不透明对象)。示例应用程序存储一个 session 中的 DiscoveryInformation 对象,因为稍后会用到该对象。要发出身份验证请求,就需要该对象,接下来我们将对此进行讨论。

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

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

身份验证

RP 在用户提供的标识符上成功执行发现后,该到验证用户身份的时候了。ConsumerManager 需要建立一个称作 AuthRequest 的特殊对象,OP 会使用该对象处理身份验证请求。

在此次交互中,需要利用名为 SimpleRegistration(简称 SReg)的一个 OpenID 扩展;该扩展允许 RP 提出以下请求:在响应中返回 OP 用户资料中的某些属性。清单 4 显示了建立 AuthRequest 对象和使用 SReg 请求属性的代码。

清单 4. 建立 AuthRequest 并使用 SReg 扩展

public static AuthRequest createOpenIdAuthRequest(DiscoveryInformation discoveryInformation, String returnToUrl) {  AuthRequest ret = null;  //  try {   // Create the AuthRequest object   ret =   getConsumerManager().authenticate(discoveryInformation,     returnToUrl);   // Create the Simple Registration 

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