一、定义
OAuth是个安全相关的协议,用户可以通过OAuth授权给第三方应用访问某些权限,而无需向第三方应用透露自己的密码。OAuth2.0是OAuth协议的最新版本。
OAuth2.0是OAuth的洗衣版本,但不向下兼容。OAuth2.0关注客户端开发者的简易性,同时为web应用,桌面应用和手机个起居室设备提供专门的认证流程。
OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAUTH是安全的。
二、授权方式
在了解授权方式之前,我们必须先了解一个东东-openid,微信官方解释为:普通用户的标识,对当前公众号唯一。我自己的理解,我们都用过微信,用微信号关注过很多个公众号,当我们关注CSDN公众号的时候,会生成一个openid,这个openid标识你和该公众号的唯一关系,当我们再关注其他公众号的时候也会生成响应的openid。不知大家是否理解呢?
接下来看授权方式,两种:
1.snsapi_base
在用户无感知的的静默授权,该方式只能拿到openid。
2.snapi_userinfo
需要用户点击确认,能拿到更多用户信息,比如昵称、头像等等。。。
三、授权过程
1. 用户关注微信公众账号。
2. 微信公众账号提供用户请求授权页面URL。
3. 用户点击授权页面URL,将向服务器发起请求
4. 服务器询问用户是否同意授权给微信公众账号(scope为snsapi_base时无此步骤)
5. 用户同意(scope为snsapi_base时无此步骤)
6. 服务器将CODE通过回调传给微信公众账号
7. 微信公众账号通过CODE向服务器请求Access Token
8. 服务器返回Access Token和OpenID给微信公众账号
9. 微信公众账号通过Access Token向服务器请求用户信息(scope为snsapi_base时无此步骤)
10. 服务器将用户信息回送给微信公众账号(scope为snsapi_base时无此步骤)
总结:
上面讲述的是微信的认证方式OAuth2.0方式,与之前学习过的CA服务认证有很多相似支持,CA认证需要进行加密和解密的过程,而OAuth是通过openid来得到来回调用户,用户同意后,才能获取用户的信息。