`
guazi
  • 浏览: 53573 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Oauth2.0与Oauth1.0的区别

 
阅读更多

 

Oauth1.0oauth2.0的区别

云计算的热火,引出了大量的开放平台,各种第三方应用建立在开放平台之上,对于安全性的要求,于是出现了oauth协议,2007年发布了Oauth1.0协议,同时又开始了Oauth2.0的讨论,2.0的草案与2011年发布。新的2.01.0不兼容。下面说一说2.01.0的区别:

12.0的用户授权过程有2步,

         A)引导用户到授权服务器,请求用户授权,用户授权后返回 授权码(Authorization Code)

         B)客户端由授权码到授权服务器换取访问令牌(access token)

         C)用访问令牌去访问得到授权的资源

         1.0的授权分3,

         A)客户端到授权服务器请求一个授权令牌(request token&secret)

         B)引导用户到授权服务器请求授权

         C)用访问令牌到授权服务器换取访问令牌(access token&secret)

         D)用访问令牌去访问得到授权的资源

21.0协议每个token都有一个加密,2.0则不需要。这样来看1.0似乎更加安全,但是2.0要求使用https协议,安全性也更高一筹。

32.0充分考虑了客户端的各种子态,因而提供了多种途径获取访问令牌

         a)授权码

         b)客户端私有证书

         c)资源拥有者密码证书

         d)刷新令牌

         e)断言证书

         1.0只有一个用户授权流程。

暂时总结出这三点。

1
0
分享到:
评论
4 楼 guazi 2013-05-17  
引用
oauth = auth.requestToken(oauth);


从这里就可以知道是1.0的了。
另外腾讯2.0的接口我调用过,是https开头的。呵呵
3 楼 dbh0512 2013-05-16  
@RequestMapping(value = "/tencent/login", method = RequestMethod.GET)
	public String tencentLogin(HttpServletRequest request, Model m) throws IOException {
		
		//初始化OAuth
		com.tencent.weibo.beans.OAuth oauth=new com.tencent.weibo.beans.OAuth();
		oauth.setOauth_callback(WeiboConfig.getValue("tenctenMobileredirect_URI").trim());
		OAuthClient auth=new OAuthClient(); 
		try {
			oauth = auth.requestToken(oauth);
			
			if (oauth.getStatus() == 1) {
				return EnumErrorCode.ERROR_404.getValue();
			} else {
				String oauth_token = oauth.getOauth_token();
				if(oauth_token != null && !"".equals(oauth_token)){
					String clientIp = WingsStrUtil.getRemortIP(request);
					
					
					String url = "http://open.t.qq.com/cgi-bin/authorize?oauth_token="+ oauth_token;
					System.out.println("oauth_token:   "+ oauth_token);
					return "redirect:" + url;
				}
			}
			
		} catch (Exception e1) {
			e1.printStackTrace();
		}
		return "/accounts/login";

	}


这样和官方Oauth2.0中提到的请求方式还是不同  我搞不明白这究竟是1.0还是2.0
2 楼 guazi 2013-05-16  
有 oauth_signature的就是1.0协议,因为2.0没有了签名验证,你说的这个也算一个。至于你问的最后一个问题,看的不是很明白,1.0的回调没有oauth_token返回的
1 楼 dbh0512 2013-05-16  
官方Oauth2.0首先要求请求[url]https://open.t.qq.com/cgi-bin/oauth2/authorize?client_id=APP_KEY&response_type=token&redirect_uri=http://www.myurl.com/example [/url]

一种的方式请求的是:http://open.t.qq.com/cgi-bin/authorize?oauth_token=https%3A%2F%2F127.0.0.1%2Ftencent%2Flogin%2Fcallback&oauth_consumer_key=801***228&oauth_nonce=4453866&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1368685710&oauth_version=1.0&oauth_signature=S%2BfiEDpbMwl9BW6U5wXN%2FSnWQdg%3D这种是1.0吗? 是否只要不是使用code换取的access_token就是Oauth1.0 

这样的区别是什么 为什么会有这样不同的写法  第二种方式在回调方法中 有时候接不到oauth_token, oauth_verifier是什么原因 ?

相关推荐

Global site tag (gtag.js) - Google Analytics