【问题标题】:Need some info about JWT Authentication for REST APIs需要一些有关 REST API 的 JWT 身份验证的信息
【发布时间】:2020-10-17 20:46:14
【问题描述】:
我需要保护我的 REST API,因为我在一个简单的 REST API 上使用了 JWT 身份验证。完成 JWT 身份验证后,我需要回答一些问题,如果有人可以在这里帮助我,那就太好了。以下是问题:
- 基于令牌的身份验证如何比基本身份验证更安全?
- token有效性检查的标准是什么?
- JWT 生成令牌的算法是什么?
- 在哪里/如何比较/验证令牌?
【问题讨论】:
标签:
rest
asp.net-core
jwt
jwt-auth
【解决方案1】:
- 对于问题 1:两者都不安全。事实上,两者都同样容易受到攻击(请对此进行更多研究)。 jwt 的优点是您可以将授权证明存储在客户端上(是的,它由您的密钥签名是安全的)。但在会话的情况下,它们会占用服务器空间。
- 对于问题 2:有效性的过程取决于实施。您可以为令牌定义到期时间,并在令牌到期后使会话无效,或者您可以使用刷新令牌来发出新令牌。验证过程涉及使用您的密钥(在将令牌发布给客户端之前对其进行签名)对令牌进行解码。
- 对于问题3:编码中涉及的通用算法是base64,而签名中涉及的通用算法是带有密钥的HS256。其他算法也用于不同的实现。
- 对于问题 4:客户端应将每个受保护请求的令牌添加到服务器(说明客户端的授权)。服务器中的初始过程将是验证令牌并查找发送请求的人。所以验证过程是在服务器端完成的。
最后,您必须记住的是,jwt 是授权证明,对于身份验证,您可以使用基于用户名密码的安全性,通过该安全性您可以发出授权令牌。