什么是三方授权?
第三方授权就是,委托第三方来对既定的用户进行鉴定,鉴定成功之后,下发信任凭证,信任凭证和用户挂钩,同时可以使用此凭证来去第三方平台,获得该用户开放的部分信息。
直白的说,就是将用户授权的工作交给第三方来做,而自己只维护信任凭证,并且获取用户信息。
就像我们的QQ和微博一样,你在逛各大论坛的时候,总会有一种途径就是第三方的App登陆。显然这种验证是要在第三方做的,而论坛只需要维护一个token,并且可以获取你的个人信息。
你如果想用部分功能,还是得注册,因为你相当于论坛只是一个有部分信息的游客,而没有成为它的用户,这种手段可以看成是提高自己访问量或转化率的一种手段吧。
其实这种授权方案不一样只用在互联网,部分企业级的网站做资源的共享访问也是这么做的。比如两个网站合作,A站点账户可以登陆B站点,B站点账户可以登陆A站点,这样A站点就能拿到B站点相关资源,反过来也是。就做到了资源共享。
那么这种授权是怎么做的呢?到底安全不安全?那么可能就要引出OAuth协议了。
OAuth是怎么做的,首先OAuth只是一个授权协议,不是一个实现或是一个中间件。
OAuth1于2007年10月建立,之后又在2009年6月重新修订和发布 http://oauth.net/core/1.0a/
OAuth1.0授权流程是什么?
流程很复杂,因为OAuth需要保证授权码和Token在传输的时候不被截取和篡改,所以使用了很多签名反复的验证。
OAuth1.0的问题:反复的签名,开放平台本来就面对开发者,但是反复的签名导致开发的流程太过于复杂。
OAuth2.0引入:抽象验证流程。由于OAuth1过于复杂,之后对OAuth进行了改造引入了Oauth2.0。
OAuth的授权过程如下:
(A) 客户端从资源拥有者那里请求授权。授权请求能够直接发送给资源拥有者,或者间接地通过授权服务器这样的中介,而后者更为可取。
(B) 客户端收到一个访问许可,它代表由资源服务器提供的授权。
(C) 客户端使用它自己的私有证书到授权服务器上验证,并出示访问许可,来请求一个访问令牌。
(D) 授权服务器验证客户端私有证书和访问许可的有效性,如果验证通过则分发一个访问令牌。
(E) 客户端通过出示访问令牌向资源服务器请求受保护资源。
(F) 资源服务器验证访问令牌的有效性,如果验证通过则响应这个资源请求。