如何防止客户端在.net 中使用其他 jwt 令牌?

Posted

技术标签:

【中文标题】如何防止客户端在.net 中使用其他 jwt 令牌?【英文标题】:how to prevent clients from use others jwt token in .net? 【发布时间】:2016-11-28 10:02:09 【问题描述】:

我正在阅读有关 jwt 的信息。几天后,我明白了这个概念。 现在我的问题是关于为每个用户创建 jwt 令牌以阻止其他人使用 其他代币。

例如场景: 用户 A 登录到服务器并获取其 jwt 令牌,服务器允许它访问 资源。

现在第三方进来获取用户A的jwt token。现在第三方可以使用这个token,不用登录系统就可以使用这个token来使用资源了。

如何在空间上为 uniqe 用户创建 jwt 令牌?

【问题讨论】:

【参考方案1】:

JWT 在“子”字段中包含用户标识符。它只能用于识别此用户

一旦颁发,令牌将替换用户的凭据,因此您必须防止令牌被盗并减轻其影响

主要使用HTTPS避免Man-In-The-Middle 设置较短的过期时间并轮换令牌 注销后在客户端删除令牌 使用 cookie 存储和设置 HttpOnly 以降低客户端脚本访问受保护 cookie 的风险 为未接受的令牌维护服务器黑名单。例如,当用户注销、更改密码或更新权限时,以及管理员撤销帐户时。 使用 cookie 存储和设置 HttpOnly 以降低客户端脚本访问受保护 cookie 的风险

【讨论】:

我听说过诸如将令牌旋转到服务器黑名单之类的方法,....在我看来,这些方法在没有数据库访问和 JWT 无状态的情况下破坏了 JWT 主体授权 我同意维护黑名单意味着了解状态并以某种方式打破“无状态”。或者,可以在令牌本身中创建一个包含密码和/或权限的哈希,并检查每个请求(访问数据库......)。看看***.com/questions/21978658/…。轮换有效期短的代币是一种安全措施。被盗的令牌会产生短期影响。您可以根据您网站的需要申请或不申请

以上是关于如何防止客户端在.net 中使用其他 jwt 令牌?的主要内容,如果未能解决你的问题,请参考以下文章

使用 JWT 令牌保护 asp.net 核心 Web api 时如何从 Azure AD 获取用户

我们可以在 Asp.NET Core 中销毁/无效 JWT 令牌吗?

在 .net core api 中存储/验证存储在 HttpOnly cookie 中的 JWT 令牌

在客户端 API 中使用 JWT 令牌

Asp.Net Web API JWT 身份验证

如何在.net6webapi中配置Jwt实现鉴权验证