OAuth 新手入门技巧 身份验证与授权分离 短期令牌 刷新令牌 安全流程影响 未来展望

2025-06-04

面向初学者的 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
PREV
在 JavaScript 中保持对象和数组不可变的最佳实践。不变性
NEXT
Pwned Together:黑客攻击 dev.to 简介 上下文 漏洞 结论