会话、cookie、JWT、令牌、SSO和OAuth 2.0简介


这些术语都与用户身份管理有关。当你登录一个网站时,你声明你是谁(识别)。你的身份被核实(认证),你被授予必要的权限(授权)。过去已经提出了许多解决方案,而且这个名单还在不断增加。

从简单到复杂,以下是Alex Xu对用户身份管理的理解。

  • WWW-Authenticate是最基本的方法。浏览器会要求你提供用户名和密码。由于无法控制登录的生命周期,现在已经很少使用。
  • 对登录生命周期的更精细的控制是session-cookie。服务器保持会话存储,而浏览器则保持会话的ID。一个cookie通常只适用于浏览器,对移动应用不友好。
  • 为了解决兼容性问题,可以使用token。客户端将令牌发送给服务器,而服务器则验证令牌的有效性。缺点是需要对令牌进行加密和解密,这可能很耗时。
  • JWT是一种代表令牌的标准方式。这种信息可以被验证和信任,因为它是数字签名的。由于JWT包含签名,所以不需要在服务器端保存会话信息。
  • 通过使用SSO(单点登录),你可以只登录一次,并登录到多个网站。它使用CAS(中央认证服务)来维护跨网站信息
  • 通过使用OAuth 2.0,你可以授权一个网站访问你在另一个网站的信息