公司專案使用了 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: 我是一個前端, 在使用這個模式的實際開發程序中, 這種模式導致了前端很多處理更加麻煩了, 所以我一直在思考使用這種模式的優勢在哪? 希望能有大佬來解答一下我的疑惑, 或者大家能相互討論一下.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/71921.html
標籤:其他技術專區
上一篇:Centos7上安裝docker
