oauth 2.0 的优点是什么?
公司项目使用了 oauth 2 的方式, 我一直想不明白, 为什么要使用这种模式
简单介绍一下 oauth 2:
普通的用户登录会返回一个 token 用于后面所有需要权限的请求验证, 每次请求服务器都会携带登录时获取的 token, 告诉服务器谁在请求, 是否可以请求. <br>而oauth2 登录会返回两个 token, 一个 access token, 这个相当于上面说的 token, 用于登录验证用户身份, 另一个是 refresh token, 顾名思义就是用来属性 token 的. 当 access token 失效时, 就会是用 refresh token 请求服务器获取新的 token, 保持用户的登录状态.
疑问
1. 双 token 更安全了吗?
如果为了安全性考虑, 将 access token 设置为有效期更短的 token, 防止 token 外泄, 而 refresh token 设置为有效期更长的 token, 用于保持合适时长的用户登录状态, 对 access token 来说更短的有效期确实更安全, 但refresh token 必须要保持更长的有效期行, 所以 refresh token 的安全性和 oauth 1 的token 安全性应该是一样的. 既然 refresh token 的安全性和以前 oauth 1 只有一个 token 的时候是一样的, 而 refresh token 可以用于获取 access token, 如果 refresh token 外泄, 那么 access token 安全性就无从保证, 所以我没感觉比 oauth 1 只有一个token的模式更安全.
2. 请求增加了
使用了 refresh token, 代表要多出请求来 重新获取 token, 这么一来请求一定比之前更多了. 这样不仅开发和使用成本更高了, 而且苛刻一点的讲, 请求的增加不是导致系统更不安全了吗?
PS: 我是一个前端, 在使用这个模式的实际开发过程中, 这种模式导致了前端很多处理更加麻烦了, 所以我一直在思考使用这种模式的优势在哪? 希望能有大佬来解答一下我的疑惑, 或者大家能相互讨论一下.