一、Oath2是什么?
Oath2是目前最流行的授权协议,用来授权第三方应用,获取用户数据。
Oauth2授权模式:
授权码模式:最完整和严谨的授权码模式,第三方平台登陆都是此模式;安全性最高;
简化模式:省略授权码阶段,客户端是纯静态页面采用此模式;安全性高;
密码模式:把用户名和密码告诉客户端,对客户端高度信任,比如客户单和认证服务器是同一公司;安全性一般;
客户端模式:直接以客户端名义申请令牌,很少用,安全性最差;
二、为什么要用Oauth2?
分布式架构方案1:session共享;
分布式架构方案2:基于token;
Cookie session和token的区别:
1、Cookie是不能跨域的,前后端分离分布式架构实现多系统SSO非常困难
2、移动端应用没有Cookie,所以对移动端支持不好。
3、token基于header传递,部分解决了CSRF攻击。
4、token要比SessionID大,客户端存储在LocalStorage中,可以直接被JS读取。
三、授权模式
授权码模式:
1.申请授权码
2.输入用户名密码,确认身份
3.返回授权码
4.客户端携带授权码访问授权服务器
5.验证授权码通过,返回令牌
简化模式:
1.申请令牌
2.输入用户名密码,确认身份
3.授权通过返回令牌
4.客户端携带令牌访问资源
5.验证令牌通过返回资源
密码模式:
1.输入用户名密码申请令牌
2.授权服务器对客户端进行身份验证
3.授权通过返回令牌
客户端模式:
客户端模式是指客户端以自己的名义而不是用户名义向服务提供者申请授权,很少使用。