如何以管理员用户身份撤销用户的访问令牌和刷新令牌?在 Oauth2 中使用 JWT

Posted

技术标签:

【中文标题】如何以管理员用户身份撤销用户的访问令牌和刷新令牌?在 Oauth2 中使用 JWT【英文标题】:How to revoke the access token and refresh token of the user as an admin user? while using JWT in Oauth2 【发布时间】:2021-09-30 19:22:34 【问题描述】:

管理员用户如何撤销用户的访问令牌和刷新令牌?在 Oauth2 中使用 JWT 时。是否建议将令牌存储在数据库中?

【问题讨论】:

【参考方案1】:

如果您希望能够撤销令牌,那么除了在数据库中保留一些数据之外别无他法。您可以保留具体的令牌,并将它们标记为已撤销,直到它们过期,或者您可以保留一个带有 clientID/userID 和时间戳的条目,并且在给定的时间戳之前不接受颁发给该客户端/用户的令牌。

如果您希望能够撤销访问令牌,那么您必须记住,所有使用该令牌的 API 都必须调用该数据库来检查令牌是否已被撤销。拥有短暂的访问令牌(15 甚至 5 分钟)通常更容易,并且只处理撤销刷新令牌,因为 RT 仅在您的授权服务器中使用。

【讨论】:

以上是关于如何以管理员用户身份撤销用户的访问令牌和刷新令牌?在 Oauth2 中使用 JWT的主要内容,如果未能解决你的问题,请参考以下文章

如何撤销持票人令牌(没有刷新)?

Cognito 用户池:如何使用刷新令牌刷新访问令牌

如何基于使用 Oauth2 协议的身份验证改进 JWT 访问令牌和刷新令牌?

如何撤销存储在 Identity Server 数据库中的 asp net core 中的刷新令牌

如何使用访问和刷新令牌返回自定义数据以识别 Django Rest Framework 简单 JWT 中的用户?

使用访问令牌和刷新令牌保持身份验证