【发布时间】:2014-07-03 16:28:54
【问题描述】:
我一直在阅读有关 JWT 的文章。
但从我的阅读来看,它不是一种身份验证机制,而更像是身份验证机制中的一个关键组件。
我目前已经实现了一个可行的解决方案,但它只是尝试 JWT 并看看它是如何工作的。但我现在所追求的是如何利用它。根据我的经验,它基本上只是一种加密机制,可为您提供唯一的加密密钥。您还可以将信息放入此令牌中。
我想在 ASP.NET web api 2 上实现它,以供移动应用程序使用。
所以第 1 步:
- app => 服务器:登录(用户,密码)
- 服务器 => 应用程序:登录 OK,这是您的 JWT
- app => server : 获取我的个人资料(发送带有请求的 JWT) 然后服务器解密 JWT 并确定请求的身份。
现在这只是我的理解,看我可能走错了路。
JWT 的理想是让您不必对每个请求进行身份验证吗?我只验证用户凭据一次(在初始登录时),然后在服务器可以简单地使用 JWT 并且不必在数据库中查找用户密码和用户之后?
我只想使用 JWT 来识别用户是谁。然后,在我对它们进行身份验证后,我将进行授权。据我所知,新的 MVC 以及身份验证和授权存在很大的混淆。
所以我的问题归结为。
如何使用 JWT 安全有效地实现身份验证机制? 我不想只是咳出一些似乎有效的东西,而且对安全隐患没有任何想法。我确信有一个来源可能设计了一个适合我要求的安全机制。
我的要求是:
- 每次会话必须只检查一次用户凭据的数据库?由于使用 bcrypt 使用大量资源来比较密码。
- 必须能够从他们的请求中识别用户。 (即他们是谁,userId 就足够了)并且最好不要访问数据库
- 就处理请求的服务器端资源而言,开销应尽可能低。
- 如果入侵者必须复制设备先前的请求,那么他应该无法访问真实用户数据。 (显然)
谢谢
【问题讨论】:
-
我在此处回答的 JWT 身份验证:stackoverflow.com/questions/40281050/…
-
希望我的回答对您也有帮助stackoverflow.com/a/52822749/5374333
标签: asp.net-web-api authentication jwt