如果没有 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 的场景