我浏览了问题,但没有找到可以解决我的疑问的内容。我找到了很多有关JWT的详细信息,但是在比较JWT可以提供的优势与生成自定义token对REST服务进行身份验证时,没有太多相关信息。
相比于生成自定义token,使用JWT(Json Web Token)的优势是什么?要生成自定义token,我可以使用一些散列策略或某些唯一随机数生成器。
如果我生成自定义token,是否存在安全问题? 您是否建议使用其他身份验证机制?
谢谢!
我浏览了问题,但没有找到可以解决我的疑问的内容。我找到了很多有关JWT的详细信息,但是在比较JWT可以提供的优势与生成自定义token对REST服务进行身份验证时,没有太多相关信息。
相比于生成自定义token,使用JWT(Json Web Token)的优势是什么?要生成自定义token,我可以使用一些散列策略或某些唯一随机数生成器。
如果我生成自定义token,是否存在安全问题? 您是否建议使用其他身份验证机制?
谢谢!
JWT令牌包含声明(claims),这些声明是有关主题的陈述(例如登录用户)。这些声明可以是姓名、电子邮件、角色等。JWT令牌经过数字签名,不易受到跨站请求伪造(CSRF)攻击。
这两个特征确保接收令牌的服务不需要返回到发行身份验证服务器来验证令牌的有效性或获取有关主题的信息。
这显著提高了使用JWT令牌系统的可扩展性。JWT令牌需要安全传输通道(HTTPS)。
这样做的缺点是令牌无法被撤销(因为没有中央服务器守护这些令牌)。这就是为什么令牌通常具有短寿命的原因。
另一方面,持有会话ID的令牌需要联系身份验证服务器来验证令牌(通常是数据库查找)并检索有关主题的信息(另一个数据库查找)。
验证HMAC令牌需要知道用于生成令牌的密钥。通常,接收服务(您的API)将需要联系身份验证服务器,因为该服务器是保存密钥的位置。
HMAC令牌和会话ID通常存储在cookie中。Cookie不能用于跨域服务调用,并且需要受到CSRF攻击的保护。