WEB认证授权4—OAuth、SSO、OpenID.md
0x01 OAuth
- OAuth(开放授权)是一个开放的授权标准,允许用户让第三方应用访问该用户在某一web服务上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。
1 原理
思路:OAuth在”客户端”与”服务提供商”之间,设置了一个授权层(authorization layer)。”客户端”登录授权层,在授权层拿到Token(Token携带权限范围和时间等),再去访问目标网站
- OAuth允许用户提供一个令牌(Token),而不是用户名和密码来访问他们存放在特定服务提供者的数据。
- 每一个令牌授权一个特定的第三方系统(例如,视频编辑网站)在特定的时段(例如,接下来的2小时内)内访问特定的资源(例如仅仅是某一相册中的视频)。
- 这样,OAuth让用户可以授权第三方网站访问他们存储在另外服务提供者的某些特定信息,而非所有内容
2 四种授权模式
WEB认证授权3—JWT Auth及其安全问题
0x01 起源
在前后端分离的应用中,后端为Model层,为前端提供数据访问的API。为了保证数据安全可靠地在用户与服务端之间传输,实现服务端的认证就极为必要。
常见的服务端认证方法有:
基于Cookie的认证:session
- 每次请求都带上cookie,取出相应字段并与服务端进行对比,以实现身份的认证(具有CORS问题)
基于Token的认证:Json Web Toekn
- 请求在HTTP的头部(或其他位置)附上token,由服务器check signature来实现
JWT不一定完全取代Cookie-Session Auth体制,其也存在缺点。JWT更适合用于认证签名的过程,更适合一次性操作的认证。
0x02 什么是Json Web Token?
- JWT是一套开放的Json标准,定义了一套简介且URL安全的方案,以安全地在客户端和服务器之间传输Json格式的信息
0x03 JWT的特点
WEB认证授权2—Token Auth
WEB认证授权1—Cookie/Seesion Auth
- HTTP是一种没有状态的协议,它并不知道是谁访问了应用。所以服务器必须记录用户的状态,进行认证、授权,进而控制用户操作。
- 随着技术的发展出现了很多认证授权机制。目前,比较成熟完善的是 Cookie/Session 机制。近几年,由于JWT机制更好得释放了服务端的资源,也变得火热起来。不过,还不够成熟容易出现很多问题。
- 所以,在更高效、更安全的方案出现前,Cookie/Session 机制可能仍然是将来Web认证授权的中流砥柱。
0x01 HTTP Basic Auth
- HTTP Basic Auth是最原始的认证方式,现在已经被淘汰
1 原理
- 每次请求API时都提供用户的username和password