关于开放平台的OAuth2.0认证
我是通过点点网了解到OAuth2.0的,点点网关于OAuth的介绍是:OAuth 2.0是在2006年设计的OAuth协议的下一个版本, 2.0版本更注重于客户端开发的简易性,同时给Web,桌面,移动等平台给予支持,它是基于OAuth WRAP开放的一套安全认证的流程。
OAuth2.0的授权认证流程如下图:
A:客户端发起授权请求
B:资源的拥有者返回允许授权的应答
C:客户端向授权服务器发出认证授权的请求
D:认证通过,授权服务器会返回一个包含Access Token的应答,该应答中应包含Access Token
E:客户端根据D中得到的Access Token向资源服务器发送访问请求
F:资源服务器返回资源。
以上只是个人的简单理解,只做参考。
关于OAuth 2.0的认证流程,根据官方的说法,总共有4种:
1. Authorization Code
这是基于网页的授权方式。客户端在请求验证前,需要先将浏览器跳转到用户授权页面,用户在登陆并确认授权后将浏览器Redirect到获得ClientID是注册的回调地址。这个地址中包含一个code参数。用户根据该参数请求服务器获得Access Token。
该认证授权流程包含了图片中的所有步骤。
2.Implicit
这是一种适合JS等网页语言使用的认证方式,这种认证方式比较简单,值包含图片中的A、B、C和D几个步骤。首先将页面引导至用户授权页面,用户授权后直接跳转到回调地址,并将Access Token作为地址参数传递给页面,方便脚本语言(JS)的访问。
3.Resource Owner Password Credentials
这是一种比较大的信任授权方式,前提条件是用户对你的应用有绝对的信任,愿意在你的应用(Client)中输入自己的用户名和密码。客户端通过用户名和密码进行验证,并得到Access Token。由于这种方式需要用户的绝对信任,并且需要客户端程序开发人员有比较强的自律和职业操守,所以这种方式经常不被推荐。
4.Client Credentials
对于不需要用户登陆就可以访问的资源,可以通过这种方式进行授权。这种授权方式只包含C、D、E和F几个步骤。
关于 Refresh Token
正常情况下,我们在获得了Access Token后就可以对受保护的资源进行访问。但是 Access Token的声明周期比较短(通常为10分钟),当Access Token到期后,我们可以通过使用Refresh Token重新获得Access Token。
每一个Refresh Token可以使用一次,在重新获得Access Token时,Refresh Token 也会被重新获得。
注意:由于我是通过点点网的OAuth了解到的这些内容,尽管也参考了一些博客和官方的文档,但仍然不能做到尽善尽美,读者在看的时候也要抱着怀疑的态度,积极求证,有不懂的问题可以留言和我交流。