当前位置: 代码迷 >> 综合 >> OAuth 学习总结
  详细解决方案

OAuth 学习总结

热度:84   发布时间:2023-12-08 09:03:27.0

【什么是OAuth】

一种为用户的资源授权提供安全,开放的标准的协议;它可以使第三方不触及用户的账号和信息,从而不会带来安全问题;

【OAuth的流程】

A:请求未经授权的request token;

B:请求经授权的request token;

C:  用授权的request token获取access token; 

 

 A. 使用者(第三方软件)向OAUTH服务提供商请求未授权的Request Token。向Request Token URL发起请求,请求需要带上的参数见上图。   

   B. OAUTH服务提供商同意使用者的请求,并向其颁发未经用户授权的oauth_token与对应的oauth_token_secret,并返回给使用者。   

   C. 使用者向OAUTH服务提供商请求用户授权的Request Token。向User Authorization URL发起请求,请求带上上步拿到的未授权的token与其密钥。   

   D. OAUTH服务提供商将引导用户授权。该过程可能会提示用户,你想将哪些受保护的资源授权给该应用。此步可能会返回授权的Request Token也可能不返回。如Yahoo OAUTH就不会返回任何信息给使用者。   

   E. Request Token 授权后,使用者将向Access Token URL发起请求,将上步授权的Request Token换取成Access Token。请求的参数见上图,这个比第一步A多了一个参数就是Request Token。   

   F. OAUTH服务提供商同意使用者的请求,并向其颁发Access Token与对应的密钥,并返回给使用者。   

  G. 使用者以后就可以使用上步返回的Access Token访问用户授权的资源。

【2.0 和1.0 区别】

Oauth1.0与oauth2.0的区别

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

1、

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

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

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

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

1.0的授权分3步,

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

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

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

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

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

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

         a)授权码

         b)客户端私有证书

         c)资源拥有者密码证书

         d)刷新令牌

         e)断言证书

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

【各个平台支持情况】

Client Libraries

  • PHP
  • Cocoa
  • iPhone and iPad
  • iOS and Mac OS X (draft 10)
  • Java
    • Apache Amber (draft 22)
    • Spring Social
    • Spring Security for OAuth
  • Python
    • sanction
    • rauth
  • Ruby Gem
  • Ruby
  • Javascript
  • .NET
    • DotNetOpenAuth
    • Spring Social for .NET