如何防止客户端在.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 令牌吗?