后端接口为什么会设refreshToken和accessToken

学习笔记 yekong

后端接口为什么会设refreshToken和accessToken?只设一个accessToken增长点有效期不可以吗?

后端接口设置refreshTokenaccessToken是为了提高安全性和灵活性。虽然只设置一个accessToken并延长其有效期看似简化了处理流程,但实际上会带来一系列的安全风险和使用上的不便。以下是使用refreshTokenaccessToken相比只使用accessToken的一些优势:

  1. 提高安全性accessToken通常用于访问受保护的资源,其有效期较短,一旦被盗用,攻击者能利用的时间窗口较小。而refreshToken用于在accessToken过期后获取新的accessToken,通常有效期较长,但仅在安全的环境下使用,如服务器端。这样即使accessToken被泄露,风险也大大降低,因为攻击者没有refreshToken来获取新的accessToken

  2. 减少用户重复登录的操作:通过refreshToken自动刷新accessToken,用户无需频繁登录,提升了用户体验。同时,即使accessToken过期,用户的会话也不会立即中断,因为系统可以自动获取新的accessToken

  3. 灵活控制会话:使用refreshTokenaccessToken的组合,系统可以灵活地控制用户的登录会话。例如,如果用户的账户存在安全风险,可以仅撤销其refreshToken,而不影响已经发放的accessToken的短期使用。这样做可以在不影响用户体验的情况下,提高系统的安全性。

  4. 支持跨域验证accessToken通常较小,适合在每次请求中携带,支持跨域资源共享(CORS)。而refreshToken由于使用频率低,不需要频繁跨域,因此可以在服务器端安全地管理。

  5. 减少服务器存储压力:由于accessToken是自包含的(通常使用JWT形式),服务器不需要存储会话状态,这减少了服务器的存储压力。而refreshToken虽然需要服务器进行验证,但由于其验证频率较低,对服务器的压力相对较小。

总之,refreshTokenaccessToken的组合使用,既提高了安全性,又提升了用户体验,同时也给系统的设计带来了更大的灵活性和可控性。

喜欢