基于OAuth安全协议的Java应用编程 - 编程入门网
基于OAuth安全协议的Java应用编程时间:2011-07-03 IBM 李三红OAuth 协议致力于使网站和应用程序(统称为消费方 Consumer)能够在无须用户透露其认证信息的情况下,通过 API 访问该用户在服务提供方(Service Provider)那里的受保护资源。更一般地说,OAuth 为 API 认证提供了一个可自由实现且通用的方法。目前互联网很多服务如 Open API 等都提供了 OAuth 认证服务,OAuth 标准也逐渐成为开放资源授权的标准。本文讨论如何使用 Google Code 上提供的 OAuth Java 库来实现基于 OAuth 认证的 Java 应用,并结合 Google 的 Data Service,给出使用 OAuth 方式访问 Google Data 的例子。 OAuth 简介 OAuth 是由 Blaine Cook、Chris Messina、Larry Halff 及 David Recordon 共同发起的,目的在于为 API 访问授权提供一个安全、开放的标准。 基于 OAuth 认证授权具有以下特点: 安全。OAuth 与别的授权方式不同之处在于:OAuth 的授权不会使消费方(Consumer)触及到用户的帐号信息(如用户名与密码),也是是说,消费方无需使用用户的用户名与密码就可以申请获得该用户资源的授权。 开放。任何消费方都可以使用 OAuth 认证服务,任何服务提供方 (Service Provider) 都可以实现自身的 OAuth 认证服务。 简单。不管是消费方还是服务提供方,都很容易于理解与使用。 OAuth 的解决方案如下图所示。 图 1. OAuth Solution 如图 1 所示 OAuth 解决方案中用户、消费方及其服务提供方之间的三角关系:当用户需要 Consumer 为其提供某种服务时,该服务涉及到需要从服务提供方那里获取该用户的保护资源。OAuth 保证:只有在用户显式授权的情况下(步骤 4),消费方才可以获取该用户的资源,并用来服务于该用户。 基于OAuth安全协议的Java应用编程(2)时间:2011-07-03 IBM 李三红从宏观层次来看,OAuth 按以下方式工作: 消费方与不同的服务提供方建立了关系。 消费方共享一个密码短语或者是公钥给服务提供方,服务提供方使用该公钥来确认消费方的身份。 消费方根据服务提供方将用户重定向到登录页面。 该用户登录后告诉服务提供方该消费方访问他的保护资源是没问题的。 OAuth 认证授权流程 在了解 OAuth 认证流程之前,我们先来了解一下 OAuth 协议的一些基本术语定义: Consumer Key:消费方对于服务提供方的身份唯一标识。 Consumer Secret:用来确认消费方对于 Consumer Key 的拥有关系。 Request Token:获得用户授权的请求令牌,用于交换 Access Token。 Access Token:用于获得用户在服务提供方的受保护资源。 Token Secret:用来确认消费方对于令牌(Request Token 和 Access Token)的拥有关系。 图 2. OAuth 授权流程(摘自 OAuth 规范) 基于OAuth安全协议的Java应用编程(3)时间:2011-07-03 IBM 李三红对于图 2 具体每一执行步骤,解释如下: 消费方向 OAuth 服务提供方请求未授权的 Request Token。 OAuth 服务提供方在验证了消费方的合法请求后,向其颁发未经用户授权的 Request Token 及其相对应的 Token Secret。 消费方使用得到的 Request Token,通过 URL 引导用户到服务提供方那里,这一步应该是浏览器的行为。接下来,用户可以通过输入在服务提供方的用户名 / 密码信息,授权该请求。一旦授权成功,转到下一步。 服务提供方通过 URL 引导用户重新回到消费方那里,这一步也是浏览器的行为。 在获得授权的 Request Token 后,消费方使用授权的 Request Token 从服务提供方那里换取 Access Token。 OAuth 服务提供方同意消费方的请求,并向其颁发 Access Token 及其对应的 Token Secret。 消费方使用上一步返回的 Access Token 访问用户授权的资源。 总的来讲,在 OAuth 的 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |