Oauth的官方简介是:随着大量开放平台的出现,建立在开放平台之上的各种第三方应用也在大量冒出,出对安全性和统一标准的要求,于是出现了oauth协议
简单来说,OAUTH是一种开放的协议,他能为桌面程序或者基于BS的web应用提供一种简单的标准方式去访问需要用户授权的API(ApplicationProgramming Interface)服务,而且任何第三方都可以使用OAUTH认证服务。在为第三方提供服务的过程中,他还能起到保护用户账号安全的作用
OpenID和OAuth的区别
在项目开发中,我们经常说认证和授权,经常把他们放到一起去描述,那两者在本质上是有区别的,OpenID和OAuth就是我们说的认证和授权。
OpenID:Authentication 认证
OAuth :Authorization 授权
简单来说,我们可以认为OAuth为我们解决“用户能(想)做什么”,是“WHAT”的问题,而OpenID则为我们验证“用户是谁”,是解决“WHO”的问题。对Oauth和OpenId的作用还是有点抽象,就举个例吧。CSDN使用QQ登录,进入csdn的登录页,点击使用QQ登录,在进入到QQ登录界面后,最开始是要请求认证,用户输入QQ号和密码,点击登录,腾讯互联会先进行验证该用户是否为我的用户,如果是我的用户,那么我会通知你(CSDN),他是我的用户,你可以使用该账户登录你的系统,这个过程就是认证(Authentication),认证就是证明你是谁,你是否是真实存在的,这就是OpenID。
而在QQ授权登录下方,有两给CheckBox复选框,可以允许CSDN获得您的昵称、头像、性别,这是在认证之后的事了,在腾讯互联你是我平台的用户后,你可以自己选择CSDN是否有权去获取你的相关信息,当你勾选后,腾讯互联就把你的这些基本信息给了CSDN,这个过程就是授权(Authorization),授权就是确定了你是谁后,又把属于你的东西给了别人,这个就是OAuth。
OAuth1.0和OAuth2.0的区别
OAuth有OAuth1.0和OAuth2.0两个版本,两个版本的区别如下:
- auth1.0与Oauth2.0是相互不兼容的,所以他们为我们提供了不同的授权方式:
2.0的用户授权过程有3步:
A)用户到授权服务器,请求授权,然后返回授权码(AuthorizationCode)
B)客户端由授权码到授权服务器换取访问令牌(access token)
C)用访问令牌去访问得到授权的资源、
总结:获取授权码(Authorization Code)—>换取访问令牌(access_token)—>访问资源:
** 1.0的授权分4步,**
A)客户端到授权服务器请求一个授权令牌(requesttoken&secret)
B)引导用户到授权服务器请求授权
C)用访问令牌到授权服务器换取访问令牌(accesstoken&secret)
D)用访问令牌去访问得到授权的资源
总结:请求授权令牌(request token&secret)—>换取访问令牌(access token&secret)—>访问资源
- 1.0协议每个token都有一个加密,2.0则不需要。这样来看1.0似乎更加安全,但是2.0要求使用https协议,安全性也更高一筹。
- 2.0充分考虑了客户端的各种子态,因而提供了多种途径获取访问令牌,有:授权码、客户端私有证书、资源拥有者密码证书、刷新令牌等方式,而且验证过程更为简洁。相比之下 1.0只有一个用户授权流程。