面向初学者的 OAuth 技巧
解耦身份验证和授权
短期代币
刷新令牌
安全流程影响
前进
笔记
开发者们热衷于将他们应用的身份管理部分卸载到 OAuth 提供商。您知道 OAuth 是个好东西,但您并不了解它会对您的组织产生什么影响。以下是一些帮助您轻松上手的技巧。
解耦身份验证和授权
客户/员工现在可以直接在您的网站上输入用户名和密码。如果他们 15 分钟内没有登录,就会自动退出,需要再次输入用户名和密码才能访问。用户注册时,就创建了一个仅供该网站使用的身份。
单独的 OAuth 服务功能有限。它需要身份信息,因此需要连接到一个或多个身份提供商。用户需要在身份提供商的表单中输入用户名和密码进行身份验证。该身份提供商负责处理 OAuth 服务的身份验证部分。
OAuth 服务允许用户授权(已注册的)应用程序使用其身份(以及可能的其他信息)。用户通过身份提供商进行身份验证后,OAuth 服务会向用户提供一个令牌,供其在授权的应用程序上使用。该令牌可以证明用户的身份与其声明的身份相符。您的网站会将身份验证工作转移给 OAuth 服务(通过 OAuth 服务的身份提供商),并且仅请求使用身份的授权。由于 OAuth 服务负责授权,身份提供商负责身份验证,因此身份验证和授权可以分离。
您的应用程序的内部功能仍然在您的控制之下,独立于 OAuth 服务(除非您希望如此)。
短期代币
一旦令牌发出,就无法被收回(只要您使用的是标准 JSON Web 令牌)。这有好处也有坏处。好处在于,这意味着您在发出令牌后无需再担心。追踪所有这些令牌会带来不必要的额外开销。坏处在于,如果其他人获得了该令牌,他们也可以使用它。
这就是为什么令牌的生命周期需要很短。比如说,最多20分钟就过期。如果其他人拿到了它,他们最多有20分钟的时间来造成破坏。
刷新令牌
但是您不希望用户每 20 分钟重新进行一次身份验证。因此,当他们首次进行身份验证时,他们会获得两个令牌 - 访问令牌(有效期为 20 分钟)和刷新令牌。刷新令牌用于您的网站告知“嘿,OAuth 提供商,我的用户仍在使用我们的服务,因此他们需要刷新访问令牌”。然后,OAuth 提供商会发放一个新的访问令牌,这样双方都能满意。OAuth 提供商会跟踪这些刷新令牌,因此它们可以持续很长时间 - 刷新令牌的有效期最好为六个月或更长时间。
这确实意味着你的网站需要编写更多代码。如果服务开始出现“未授权”错误,则访问令牌可能已过期,需要刷新。
安全流程影响
如今,只需标记用户帐户,他们的身份验证就会停止工作,他们就无法再使用你的系统了,这很好。但请记住,我们已经将身份验证与授权分离,因此你也需要制定一个撤销其刷新令牌的计划。
前进
然后,既然您的身份验证端点已经合并,也许您可以研究多因素身份验证并真正确定“忘记密码?”功能的用户体验。
笔记
本文旨在回应和补充这篇超高质量的文章:
从 Google 图片搜索的“标记为可重复使用”工具中抓取的图片,由 Bauke Schildt 绘制
文章来源:https://dev.to/antonfrattaroli/oauth-tips-for-the-uninitied-476e