看来我还不太明白刷新令牌背后的想法。
假设使用了短期访问令牌。此令牌可能会被盗,从而允许攻击者访问资源,直到它过期(可能是 3600 秒)。
但是,如果他也设法窃取了刷新令牌怎么办(不应该更困难,因为它没有比访问令牌更受保护,对吧?)?他不能简单地获得一个新的访问令牌,因为当有人拥有刷新令牌时刷新访问令牌不需要身份验证?
看来我还不太明白刷新令牌背后的想法。
假设使用了短期访问令牌。此令牌可能会被盗,从而允许攻击者访问资源,直到它过期(可能是 3600 秒)。
但是,如果他也设法窃取了刷新令牌怎么办(不应该更困难,因为它没有比访问令牌更受保护,对吧?)?他不能简单地获得一个新的访问令牌,因为当有人拥有刷新令牌时刷新访问令牌不需要身份验证?
TL;DR:是的,刷新令牌是不记名令牌,因此应该受到保护。
刷新令牌很强大,因为通常它们是:
刷新令牌也是持有者令牌,这意味着使用令牌的服务将授予令牌持有者的访问权限——不问任何问题。这类似于访问令牌。
因此,确保不记名令牌受到保护和安全存储非常重要。令牌越重要,它就应该受到更好的保护。
作为 OAuth2 中的示例,通常与移动应用程序一起使用的隐式流,客户端应用程序具有短暂的访问令牌。他们通常也不会获得刷新令牌。由于客户端应用程序很容易受到攻击,并且任何数据/令牌都会受到攻击,因此其不记名令牌具有有限的特权和生命周期。
相比之下,在通常与服务器端应用程序一起使用的 OAuth2 授权代码流中,服务器应用程序被赋予一个寿命更长的访问令牌或/和一个刷新令牌。这是因为假设服务器端更受信任且不太可能受到损害。话虽如此,鉴于其使用模式,服务器端令牌仍应安全存储。
总而言之,在决定您需要哪种代币时,请检查: - 客户的信任级别和最适合该信任级别的流程 - 保护您的代币!
你是对的,这就是为什么刷新令牌应该被安全存储。也许在启用了安全标志的 cookie 中对其进行加密,因此它仅通过 HTTPS 传输。