



One Time Password一次性密码




Basic Authentication 基本认证
是http协议内置的最简单的身份认证方式,常用与内网接口、测试环境、简单后台鉴权。
公网必须用HTTPS
客户端将用户名和密码拼接成字符串(admin:123456 base64编码: YWRtaW46MTIzNDU2)
放在请求头Authorization中,格式:Basic 编码后的字符串
如: Authorization: Basic YWRtaW46MTIzNDU2
服务端拿到后解码,校验用户名和密码是否正确
校验通过则正常相应,失败返回401 Unauthorized
服务器验证返回相应的资源和处理结果
Token Authentication 令牌认证
方案1:JWT(无状态Token)
方案2: 随机Token+Redis(有状态)
小型项目、简单系统:用JWT
大型项目、需要注销、踢人:Redis+随机Token
用户提交账号密码,登录成功返回令牌(如:JWT)
前端把Token存在LocalStorage/SessionStorage/Cookie中
前端端每次请求请求头带上Token
放在请求头Authorization中,格式:Bearer token
如果令牌是有效的就认为客户已经登录过了
从令牌中提取客户的非敏感关键信息(如:用户编号)
根据用户信息查询用户所拥有的资源返回结果
OAuth Authentication 第三方授权登录
OAuth不是登录,是授权
微信登录、QQ登录、Github登录、Google登录
OAuth不传递账号密码,只传递授权凭证
OAuth里常见的三个令牌
code(授权码):一次性,换token用
access_token:短期,用来访问用户资源
refresh_token: 长期,access_token过期后刷新用
用户点击微信登录
跳转到微信授权页
用户同意授权
微信返回授权码code给客户端
客户端拿着code去微信换取access_token拉取用户信息
登录成功,客户端自己生成JWT/Session给用户
API Key Authentication

