如何从使用 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 的客户端应用程序(html、javascript)。
我还有一个连接到同一个 web-api 应用程序的 android 应用程序。
当用户从 android 应用程序登录时,我想从 Web 客户端注销用户。 该怎么做?
【问题讨论】:
如果您想使用real-time
通知(例如当用户在应用程序中时)并且服务器向客户端发出请求,那么您有两种可能性:1. 从服务器发送的推送通知到客户端(客户端然后解析推送通知的有效负载并检查是否收到注销操作)或使用套接字(客户端在“注销”通道上注册,然后服务器启动注销并且客户端侦听此通道)。如果您不想进行实时注销,那么只需添加一个新的 API 端点,并在用户打开应用程序时发送 JWT 令牌。如果无效,则注销用户。
但是我会有短暂的令牌?
【参考方案1】:
这是 JWT 令牌的挑战。验证 JWT 令牌客户端不需要与令牌颁发者交谈。如果客户端不使用,则没有使用 JWT 令牌。
您可以按照以下方法处理注销场景:
方法 1) 保持 JWT 令牌的生命周期非常短。
方法 2) 维护分布式缓存 - 所有注销的 JWT 令牌都可以存储在其中,并且在使用分布式缓存验证令牌检查之前。
【讨论】:
以上是关于如何从使用 JWT 令牌的 Web 客户端应用程序中注销用户的主要内容,如果未能解决你的问题,请参考以下文章
如何以安全的方式为客户提供 JSON Web 令牌(JWT)?
如何跨不同 API 对 JSON Web 令牌 (JWT) 进行身份验证?