我已经使用https://auth0.com/blog/securing-asp-dot-net-core-2-applications-with-jwts/在.net core 2.0中创建了一个演示应用程序,这是使用JWT令牌进行身份验证的示例,但是我注意到当我为一个用户创建一个令牌并将其替换为另一个为该用户创建的令牌时,另一个用户(来自其他浏览器),它将验证并允许访问。为什么? 另外,如果有人通过当前用户登录时拥有一个很好的JWT令牌示例,则请共享链接,因为我对此并不陌生。
答案 0 :(得分:1)
这就是Bearer身份验证架构的工作方式。
服务器的受保护路由将在Authorization标头中检查有效的JWT,如果存在,则将允许用户访问受保护的资源。
(来自:How do JSON Web Tokens work?)
因此,每个可以提供有效且未过期的令牌的人都可以访问您受保护的资源。通常不会检查令牌是最初发行给您还是其他人。
您当然可以进行这种检查:
找到无法伪造的东西来识别设备,并且出现在每个请求中
将此信息或更好的哈希值添加为令牌的声明。您可以将claims(基本上只是键/值对)添加到令牌中。
编写您自己的自定义授权属性,并检查请求是否来自JWT中相应声明中所述的同一设备。