oauth协议的相关概念,网络上很多,本文就不再多做说明了 可参考 http://baike.baidu.com/view/3948029.htm 上的介绍学习
但要搭建自己的oauth服务器资料相对较少,本文就介绍如何自己搭建oauth服务。
第一步,到googlecode下载开源的oauth项目实例,包括多种语言版本,本文以JAVA为示例。
地址:http://code.google.com/p/oauth/
使用svn获取到java文件夹下的内容,就会得到java版的服务端oauth代码。
第二步,阅读源码,找出自己需要改动的地方,详细的实现过程本人并没有全部细看,下面只告诉大家搭建简单的oauth服务需要做哪些工作
1.找到net.oauth.example.provider.servlets下面的四个类,这里对应着oauth3个请求url,跟一个用于测试的链接,大家可以根据名字分辨各自的用途,前提是你要理解了oauth的验证过程,不清楚的,还请详细阅读 http://baike.baidu.com/view/3948029.htm里的内容。EchoServlet.java此类则是用于测试的一个链接
2.找到net.oauth.example.provider.core包下的SampleOAuthProvider.java类,此类就是基于这个开源项目的一个简单的oauth实现,我们这里可以直接使用,需要注意的是同在该目录下的一个provider.properties文件,这里面配置了自定义的oauth账号信息,看里面的注释可以得知,格式值得注意的是key=secret,这种中间的等于号不能理解为赋值,而是对应的意思,意思为用户名为key的用户密码是secret,还有一些描述信息,以及回调地址之类的参数,可根据需要配置
第三步,经过以上的修改与配置,当这个web项目跑起来的时候则表示一个oauth的服务已经起来了,当然这里可以把代码考入自己的项目里,只在需要使用的地方写上,EchoServlet.java类里的前三行判断代码,这里要注意,当没通过验证时他会抛出一个异常,只有通过了才会向下执行(建议此处代码放在一个过滤器里就行了)
try{
OAuthMessage requestMessage = OAuthServlet.getMessage(request, null);
OAuthAccessor accessor = SampleOAuthProvider.getAccessor(requestMessage);
SampleOAuthProvider.VALIDATOR.validateMessage(requestMessage, accessor);
//这里是自己通过验证后,做任意操作的代码
}catch (Exception e){
SampleOAuthProvider.handleException(e, request, response, false);
}
经过这三步,服务器端的oauth服务就完成了,然后再写客户端的请求,可以使用signpost的jar包,获取地址:http://code.google.com/p/oauth-signpost/,这个里面也有例子,大家参考着做就可以了