常见登录鉴权方式
-
HTTP Basic Authentication(HTTP 基本认证)
-
session-cookie
- 客户端向服务端发送鉴权请求,服务端返回客户端session,客户端将session 存储在cookie池中,下次请求时,客户端将session带着一起请求
-
Token验证(JWT、SSO)
- JWT
- 客户端发送请求
- 服务端返回一个 JSON对象发回给用户,后续用户与服务端通信时,需要发回这个JSON
- base64URL加密;一旦发出无法修改;由Header、Payload、Signature组成,中间用(.)拼接起来;
- SSO
- 用户只需要登录一次,就可以访问所有相互信任的应用系统
- 需要一个独立的认证中心,认证通过后,会办法一个令牌给各个子系统
- JWT
-
OAuth(开放授权)
- 数据的所有者告诉系统,同意授权第三方应用进入系统,获取这些数据;系统从而产生一个短期的进入令牌,用来代替密码,供第三方应用使用
- 特点:令牌、短期有效、可撤销、范围可控
- 第三方应用申请令牌前,都必须先到系统备案,然后会拿到两个身份识别码:客户端ID(client ID)和客户端密钥(client secret)
- OAuth 2.0 授权模式
- 授权码模式(response_type=code & grant_type=authorization_code):
- 最完整、最严密;第三方需要带着自己的客户端id(client ID)跳转到系统,在系统登录后,返回给第三方一个授权码,第三方拿到授权码后,可以在后端服务器,向系统申请令牌,系统颁发令牌;特点:需要客户端的后台服务器,与”服务提供商“的认证服务器进行互动;
- 简化模式(response_type=token):
- 直接向前端颁发令牌,简化了授权码这一步;第三方带着自己的客户端id(client ID)向系统申请授 权,在系统登录后,即为同意授权;系统跳回到第三方指定的网址,并且把令牌作为参数,返回给第三方的前端;系统同意授权直接在浏览器中向认证服务器申请令牌
- 密码模式(grant_type=password):
- 用户向第三方提供系统的用户名和密码;第三方使用这些信息,向系统索要授权;通常在用户对于客户端高度信任的情况下使用;
- 凭证模式(grant_type=client_credentials):
- 适用于没有前端的命令行应用,即在命令行下请求令牌;
- 授权码模式(response_type=code & grant_type=authorization_code):
-
参考资料