文章目录
authentication 认证访问者是谁
authorization 访问权限
一. Basic access authentication
使用Basic access authentication时,每一个request都包含了一个header,格式为:
Authorization: Basic <credentials>
其中,credentials时使用base64对id与password进行编码的,id与password之间用 :
隔开。
缺点:
- 每个浏览器要存credentials,每个浏览器的存储策略到不同。比如ie中只存15m。
- 由于credential是使用base64编码的(不安全),常常需要何https配合使用。
二、API KEY authentication
3 Common Methods of API Authentication Explained
它只是一种认证方式,而不是授权方式。
在用户第一次登陆时,获取api-key,将它存起来(如cookie)中,下次请求时,从cookie中看是否有api-key,有就携带着发送请求。
下面时ant-design-pro中使用api-key进行认证的步骤。
- 登陆
- 将login获取的token存到cookie中
- 接口请求时携带api-key。
三. OAuth
允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表等),而无需将用户名和密码提供给第三方应用。授权模式总共有5中,常见的有三种。
3.1 授权码模式(authorization code grant)
参考 What is the OAuth 2.0 Authorization Code Grant Type?
。
流程:
- 第三方应用打开浏览器
- 用户看到授权提示并授权
- 携带授权码(
authorization code
)重定向到第三方应用 - 第三方应用使用授权码获取
access token
3.2 简化模式(implicit grant)
参考 What is the OAuth 2.0 Implicit Grant Type?
这种方式的适用环境通常是一些javascript应用没有比较好的安全方式来存储 authorization code。
流程:
- 第三方应用打开浏览器
- 用户看到授权提示并授权
- 用户携带着
access token
返回第三方应用
3.3 密码模式 (password grant)
参考 What is the OAuth 2.0 Password Grant Type?
适用与你自己的应用(受信app),不适合给第三方应用使用。
流程:
- 应用收集用户的账号密码(直接输入)
- 受信应用发起一次post请求,使用password获取acess token。
3.4 oauth2.0 授权方式的选择
OAuth site
Spring Security Architecture
四. Cookie/Session 认证机制
需要在客户端的浏览器端创建了一个Cookie对象,万一Cookie被删了呢
五. jwt
json web token。cookie/session 认证机制中服务器端都要存当前用户信息,而在json web token认证中,用户信息存在客户端。
六.参考文献
4种认证(authentication)或授权(authorization)方式
Web开发中常见的认证机制
Basic access authentication
OAuth 2.0
理解OAuth 2.0