Avi*_*hen 5 security token access-token jwt http-token-authentication
我正在构建基于令牌的身份验证(Node.js 使用带有角度客户端的护照/JWT)。
用户输入他的凭据后,他会获得一个访问令牌,他在标头内的每个请求中发送该令牌(标头:bearer TOKEN)。
我不想在他的访问令牌每次到期时(我猜大约是每天)都提示登录请求,我听说过Refresh Tokens。刷新令牌永不过期(或很少过期)并且能够无限期更新令牌。当访问令牌即将过期时,客户端可以通过发送其刷新令牌来发送更新请求以获取新的访问令牌。
我不明白一些事情,我可能会遗漏一些东西:
长期/永不过期的刷新令牌如何不会破坏拥有短期访问令牌的安全性。
Cookie 可以被窃取和使用,直到它们过期。令牌是短暂的,所以它们更安全,但如果我提供一个长期的刷新令牌,我就失去了使用令牌的优势。
注意:我知道刷新令牌是在初始登录时发送的,因此不能在每个请求中被欺骗,但如果它们在初始请求中被欺骗,它们就很容易受到攻击。
刷新令牌与访问令牌的路径不同:访问令牌仅呈现给资源服务器,刷新令牌仅呈现给授权服务器。访问令牌可以是独立的,因此不需要昂贵的调用授权服务器来检查其有效性,但为了减少损失并提高准确性(如果出现问题,它不能被撤销),它是短暂的。刷新令牌的寿命很长,并且在每次调用授权服务器时都会得到验证,因此可以撤销。两者的结合使得系统更加安全。