如何从使用 JWT 令牌的 Web 客户端应用程序中注销用户

Posted

技术标签:

【中文标题】如何从使用 JWT 令牌的 Web 客户端应用程序中注销用户【英文标题】:How to log out users from web client application that uses JWT tokens 【发布时间】:2020-09-19 18:44:10 【问题描述】:

我有一个 ASP.Net Core 3.1 web-api 应用程序,它使用 MS Identity 框架为登录用户生成 JWT 令牌。

然后我有一个连接到该 web-api 的客户端应用程序(htmljavascript)。

我还有一个连接到同一个 web-api 应用程序的 android 应用程序。

当用户从 android 应用程序登录时,我想从 Web 客户端注销用户。 该怎么做?

【问题讨论】:

如果您想使用real-time 通知(例如当用户在应用程序中时)并且服务器向客户端发出请求,那么您有两种可能性:1. 从服务器发送的推送通知到客户端(客户端然后解析推送通知的有效负载并检查是否收到注销操作)或使用套接字(客户端在“注销”通道上注册,然后服务器启动注销并且客户端侦听此通道)。如果您不想进行实时注销,那么只需添加一个新的 API 端点,并在用户打开应用程序时发送 JWT 令牌。如果无效,则注销用户。 但是我会有短暂的令牌? 【参考方案1】:

这是 JWT 令牌的挑战。验证 JWT 令牌客户端不需要与令牌颁发者交谈。如果客户端不使用,则没有使用 JWT 令牌。

您可以按照以下方法处理注销场景:

方法 1) 保持 JWT 令牌的生命周期非常短。

方法 2) 维护分布式缓存 - 所有注销的 JWT 令牌都可以存储在其中,并且在使用分布式缓存验证令牌检查之前。

【讨论】:

以上是关于如何从使用 JWT 令牌的 Web 客户端应用程序中注销用户的主要内容,如果未能解决你的问题,请参考以下文章

如何以安全的方式为客户提供 JSON Web 令牌(JWT)?

同时从移动设备和 Web 刷新 JWT 令牌的最佳实践

如何从客户端应用程序路由 JWT 令牌请求,用双斜杠形成?

如何跨不同 API 对 JSON Web 令牌 (JWT) 进行身份验证?

了解 Web 身份验证上下文中的 JSON Web 令牌 (JWT)

了解 Web 身份验证上下文中的 JSON Web 令牌 (JWT)