如果没有 OpenID/Oauth2 等广泛使用的标准,我可以只使用 JWT 进行身份验证吗?

Posted

技术标签:

【中文标题】如果没有 OpenID/Oauth2 等广泛使用的标准,我可以只使用 JWT 进行身份验证吗?【英文标题】:Can I use only JWT for authentication without widely used standards like OpenID/Oauth2? 【发布时间】:2021-09-14 05:01:30 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于如果没有 OpenID/Oauth2 等广泛使用的标准,我可以只使用 JWT 进行身份验证吗?的主要内容,如果未能解决你的问题,请参考以下文章

OpenId / OAuth 2 流 - 使用 AWS Cognito 的场景

Spring Boot/Angular整合Keycloak实现单点登录

为啥 Loki 库没有得到更广泛的使用?

SQL跑得太慢怎么办?

SQL Server 和 XAMPP [关闭]

你如何获得更广泛的上下文 HTML,在 jQuery 或 Cheerio js 中包装给定的选择器代码?