基于OAuth安全协议的Java应用编程 - 编程入门网
技术体系里,服务提供方需要提供如下基本的功能:
第 1、实现三个 Service endpoints,即:提供用于获取未授权的 Request Token 服务地址,获取用户授权的 Request Token 服务地址,以及使用授权的 Request Token 换取 Access Token 的服务地址。 第 2、提供基于 Form 的用户认证,以便于用户可以登录服务提供方做出授权。 第 3、授权的管理,比如用户可以在任何时候撤销已经做出的授权。 而对于消费方而言,需要如下的基本功能: 第 1、从服务提供方获取 Customer Key/Customer Secret。 第 2、提供与服务提供方之间基于 HTTP 的通信机制,以换取相关的令牌。 我们具体来看一个使用 OAuth 认证的例子。 在传统的网站应用中,如果您想在网站 A 导入网站 B 的联系人列表,需要在网站 A 输入您网站 B 的用户名、密码信息。例如,您登陆 Plaxo (https://www.plaxo.com ),一个联系人管理网站,当您想把 GMail 的联系人列表导入到 Plaxo,您需要输入您的 GMail 用户名 / 密码,如图 3 所示: 图 3. 在 Plaxo 获得 GMail 联系人 基于OAuth安全协议的Java应用编程(4)时间:2011-07-03 IBM 李三红在这里,Plaxo 承诺不会保存您在 Gmail 的密码。 如果使用 OAuth 认证,情况是不同的,您不需要向网站 A(扮演 Consumer 角色)暴露您网站 B(扮演 Service Provider 角色)的用户名、密码信息。例如,您登录 http://lab.madgex.com/oauth-net/googlecontacts/default.aspx 网站, 如图 4 所示: 图 4. 在 lab.madgex.com 获得 GMail 联系人 点击“Get my Google Contacts”,浏览器将会重定向到 Google,引导您登录 Google,如图 5 所示: 图 5. 登录 Google 基于OAuth安全协议的Java应用编程(5)时间:2011-07-03 IBM 李三红登录成功后,将会看到图 6 的信息: 图 6. Google 对 lab.madgex.com 网站授权 在您登录 Google,点击“Grant access”,授权 lab.madgex.com 后,lab.madgex.com 就能获得您在 Google 的联系人列表。 在上面的的例子中,网站 lab.madgex.com 扮演着 Consumer 的角色,而 Google 是 Service Provider,lab.madgex.com 使用基于 OAuth 的认证方式从 Google 获得联系人列表。 下一节,本文会给出一个消费方实现的例子,通过 OAuth 机制请求 Google Service Provider 的 OAuth Access Token,并使用该 Access Token 访问用户的在 Google 上的日历信息 (Calendar)。 示例 准备工作 作为消费方,首先需要访问 https://www.google.com/accounts/ManageDomains,从 Google 那里获得标志我们身份的 Customer Key 及其 Customer Secret。另外,您可以生成自己的自签名 X509 数字证书,并且把证书上传给 Google,Google 将会使用证书的公钥来验证任何来自您的请求。 具体的操作步骤,请读者参考 Google 的说明文档:http://code.google.com/apis/gdata/articles/oauth.html。 在您完成这些工作,您将会得到 OAuth Consumer Key 及其 OAuth Consumer Secret,用于我们下面的开发工作。 如何获得 OAuth Access Token 以下的代码是基于 Google Code 上提供的 OAuth Java 库进行开发的,读者可以从 http://oauth.googlecode.com/svn/code/java/core/ 下载获得。 指定 Request Token URL,User Authorization URL,以及 Access Token URL,构造 OAuthServiceProvider 对象:
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |