在eclipse开发环境中使用Java搭建OAuth Server和OAuth Client
来源:互联网 发布:妮维雅 防晒 知乎 编辑:程序博客网 时间:2024/05/15 04:51
1. OAuth协议
OAuth协议是各类开放平台验证第三方应用程序权限的常用方法。在此不多做解释,详情见百度百科
2. 资源介绍
我们借助Google Code上的开源项目(下载地址:http://code.google.com/p/oauth/ ) 来搭建OAuth服务器和客户端,首先使用SVN将Java部分的代码checkout。这个项目是使用Maven进行管理的,对于俺这个没怎么用过Maven的屌丝猿来说,着实吃了不少苦头~
2014-4-1时,检出的内容结构如下:
其中:
core目录下为OAuth中几个核心包的实现 (注:这里实现的是OAuth 1.0)
core-old目录下为OAuth中核心包的旧版本实现
如果你不关注OAuth协议的实现细节,尽可以忽略这两个包
example目录里面提供了OAuth实例(包括:服务器、桌面客户端、WebApp客户端等)
其他的目录和文件不做介绍。
我们重点关注example包中的内容,其中:
Oauth-provider 为 OAuth服务器部分
Desktop 为OAuth桌面应用方式的客户端
Webapp 为OAuth Web应用方式的客户端
3. 服务器端
下面阐述服务器端的搭建过程(我使用的eclipse版本为Eclipse Java EE IDE for Web Developers. Version: Helios Service Release 2)
1. 创建一个Dynamic Web Project (假设名称为OAuthServer)
2. 打开oauth-provider目录下的如下目录: oauth-provider\src\net\oauth\example\provider,中间有两个文件夹:core和servlets
3. 在OAuthServer的src目录下创建包:net.oauth.example.provider.core,然后将步骤2中打开的目录下core目录中的文件放在此包下
4. 在OAuthServer的src目录下创建包:net.oauth.example.provider.servlets,然后将步骤2中打开的目录下servlets目录中的文件放在此包下
5. 回到oauth-provider\web目录,并将中间的文件复制到与OAuthServer中WebContent(可能为其他名字)下的对应位置
6. 自行消灭各类BUG,如Build Path没有全部加入、Java版本不对等问题
7. 至此,OAuth的服务器端搭建完毕
说明:根据OAuthServer的配置文件web.xml,可以找到OAuth授权过程中的三个URL,以及一个用来测试的/echo地址。
4. 桌面应用客户端
下面阐述桌面应用客户端的搭建过程
1. 创建一个Java Project(假设名称为OAuthClientDesktop)
2. 打开desktop目录下的目录 desktop\src\main\java
3. 在OAuthClientDesktop的src目录下创建包:com.centerkey.utils,并将desktop\src\main\java\com\centerkey\utils下的文件复制到该包下
4. 在OAuthClientDesktop的src目录下创建包:net.oauth.example.desktop,并将desktop\src\main\java\net\oauth\example\desktop\DesktopClient.java文件复制到该包下
5. 在OAuthClientDesktop项目中创建lib文件夹,并将 OAuth\example\oauth-provider\web\WEB-INF\lib 和OAuth\lib 两个文件夹下的jar包放在该文件夹中,将lib文件夹中的所有jar包放在OAuthClientDesktop工程的build path中
6. 在net.oauth.example.desktop包中创建类 SampleClient,并编写其实现代码如下:
- package net.oauth.example.desktop;
- import net.oauth.OAuth;
- import net.oauth.OAuthConsumer;
- import net.oauth.OAuthMessage;
- import net.oauth.OAuthServiceProvider;
- import net.oauth.client.OAuthClient;
- import net.oauth.client.httpclient4.HttpClient4;
- public class SampleClient {
- public static void main(String[] args) throws Exception {
- final OAuthServiceProvider provider = new OAuthServiceProvider(
- "http://localhost:8080/OAuthServer/request_token",
- "http://localhost:8080/OAuthServer/authorize",
- "http://localhost:8080/OAuthServer/access_token");
- final OAuthConsumer consumer = new OAuthConsumer(null // callback URL
- , "myKey" // consumer key
- , "mySecret" // consumer secret
- , provider);
- final String serviceURL = "http://localhost:8080/OAuthServer/echo";
- final DesktopClient client = new DesktopClient(consumer);
- client.setOAuthClient(new OAuthClient(new HttpClient4()));
- OAuthMessage result = client.access(OAuthMessage.GET, serviceURL //
- , OAuth.newList());
- System.out.println(result.readBodyAsString());
- }
- }
其中涉及到的四个URL,OAuthServiceProvider 和 serviceURL 按实际情况改写
5. 测试
1. 启动服务器端的OAuthServer
2. 运行OAuthClientDesktop工程(启动函数为SampleClient中的main函数)
3. 按引导进行授权:运行OAuthClientDesktop后会弹出如下授权页,填写UserId并点Authorize即可完成授权
6. 服务器端按逻辑需求修改
为达到身份验证的目的,服务器端应该对用户在网页里输入的内容进行验证,修改OAuthServer中的相关逻辑即可:
在OAuthServer中的AuthorizationServlet类中修改逻辑:
扩展该类的doPost方法,将if(userId == null)改成自己的逻辑即可。
7. Web应用客户端
下面阐述Web应用客户端的搭建过程
1. 创建Dynamic Web Project(假设名称为OAuthClientWebapp)
2. 在src目录下新建包net.oauth.example.consumer.webapp并将OAuth\example\webapp\src\main\java\net\oauth\example\consumer\webapp目录下的文件复制到该包中
3. 将OAuth\example\webapp\src\main\webapp目录下的文件复制到OAuthClientWebapp下WebContent目录中对应的位置
4. 将OAuthClientDesktop中lib文件夹中的所有jar包复制到OAuthClientWebapp下WebContent\WEB-INF\lib文件夹中,并将其配置进Build Path
5. 修改net.oauth.example.consumer.webapp包中consumer.properties文件下sample.serviceProvider.baseURL所对应的实际URL,如修改为:http://localhost:8080/OAuthServer/
6. 同时启动OAuthServer和OAuthClientWebapp两个工程,并在浏览器中访问http://localhost:8080/OAuthClientWebapp/进行测试
- 在eclipse开发环境中使用Java搭建OAuth Server和OAuth Client
- 搭建oauth-server
- 在ASP.NET中基于Owin OAuth使用Client Credentials Grant授权发放Token(一)
- Simple OAuth Client and Server Examples
- 基于 PHP & MySQL 搭建 OAuth Server
- 基于 PHP & MySQL 搭建 OAuth Server
- 基于 PHP & MySQL 搭建 OAuth Server
- 基于 PHP & MySQL 搭建OAuth Server
- 基于 PHP & MySQL 搭建 OAuth Server
- 基于 PHP & MySQL 搭建OAuth Server
- 【引用】基于 PHP & MySQL 搭建OAuth Server
- spring-oauth-client
- oauth:client-credentials
- OAuth
- OAuth
- OAUTH
- oauth
- oAuth
- mybatis blob与clob处理
- 第十四周 oj 利用虚函数-计算图形面积
- 罗索实验室 好多流媒体的知识
- 得了输卵管堵塞能治好吗
- Jumping智能跳绳:回避不必要的智能化
- 在eclipse开发环境中使用Java搭建OAuth Server和OAuth Client
- Visual Studio 2013 class颜色问题
- 一些关于ActionScript 3.0性能的优化
- 宏基CEO押注建立自己的云计算和扩大BYOD商业模式
- oc学习笔记(六)面向对象-开发技巧
- HTML_项目符号使用图片
- 第14周 阅读程序,对照结果 定义成虚函数
- Linux内存管理机制
- 艾瑞mGameTracker:别踩白块儿,踩好运