总结:可伸缩性差,大量的额外流量(额外调用)没有带来业务价值,服务器的负载很大。
大体组成:用户名 + 密码 + 访问令牌 + 过期令牌
工作原理:OAuth 2.0 标准的核心思想是,用户使用用户名和密码登录系统后,客户端(用户访问系统的设备)会收到一对令牌,这是一个访问权限令牌和刷新令牌。
访问令牌用于访问系统中的所有服务。到期后,系统使用刷新令牌生成一对新的令牌。所以,如果用户每天都进入系统,令牌也会每天更新,不需要每次都用用户名和密码登录系统。刷新令牌也有它的过期时间(虽然它比访问令牌长得多),如果一个用户一年没有进入系统,那么很可能会被要求再次输入用户名和密码。
OAuth 2.0 标准取代了基本的身份验证方法,它具有一定的优势,例如用户每次想要进入系统时不用输入用户名和密码。但是,系统仍然需要调用身份验证服务器,就像使用基本身份验证方法时一样,以检查拥有该令牌的用户有权限做什么。
假设有效期是一天。这意味着登录服务器上的负载要少得多,因为用户每天只需要输入一次凭证,而不是每次都要进入系统。但是,系统仍需要验证每个令牌并检查用户角色的存储状态。所以我们最终还要调用身份验证服务器。
总结:和 Basic 验证有相同的问题 - 可伸缩性差,身份验证服务器负载较高。
大体组成:用户名 + 密码 + JSON数据 + Base64 + 私钥 + 到期日期
工作原理:当用户第一次使用用户名和密码登录系统时,系统不仅会返回一个访问令牌(只是一个字符串),而是一个包含所有用户信息的 JSON 对象,比如角色和权限,使用 Base64 进行编码并使用私钥签名。下图是它在编码前后的样子:
看起来很可怕,但这确实有效!主要区别在于我们可以在令牌中存储状态,而服务保持无状态。这意味着用户自己拥有自己的信息,不需要额外的调用来检查它,因为所有的内容都在令牌里。这对于减少服务器负载方面是一个很大的优势。这个标准在世界范围内得到广泛应用。
总结:良好的可伸缩性,可以和微服务一起工作。
☰