我可以只使用 JWT 进行身份验证而不使用 OpenID/Oauth2 等广泛使用的标准吗?

问题描述

我正在编写 Rest Api 和 SPA。我想要用户的无状态身份验证。这就是为什么我想知道仅使用 JWT 而没有广泛使用的标准(如 OpenID/Oauth2)是否仍然安全?

解决方法

JWT 是一种令牌格式。 OAuth2/OIDC 是一个协议,它告诉您应该如何获取访问、刷新和 ID 令牌。没有要求只能通过 OAuth 获取 JWT,或者 OAuth 流应该只使用 JWT。事实上,访问和刷新令牌通常是不透明的令牌,而不是 JWT。此外,JWT 还可用于许多其他功能(例如签名请求对象)。

这意味着您的系统可以发出 JWT,而无需使用 OAuth2/OIDC 中描述的协议。也就是说,您必须记住,创建标准是为了我们可以实现互操作性并防止常见的安全威胁。如果您实施 OAuth2 或 OIDC 流程来获取令牌,而不是自己解决问题,那么您的系统将更加安全。