為什麼這篇access token是什麼鄉民發文收入到精華區:因為在access token是什麼這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者jtorngl (DDFL)看板java標題[問題] 請問 access token 使用問題時...
※狀況概述:
最近在研究 Spring Security 和 OAuth2 授權
目前的需求情境是:存取 API 需要登入
而 token 會儲存在 client,每次呼叫 API 時傳送該 token
登入可以使用註冊的帳密,也可以透過第三方登入
使用帳密登入,目前登入驗證成功後,會建立一個 JWT 回傳至 client
而第三方登入,Spring Security 的 OAuth2 filter
會從導頁至登入頁,到取得 access token 直接處理完
並且把 access token 和其它資訊存在 session 的樣子
目前 client 的開發人員是決定由他自己去取得 access token
第一個問題是
1. client 直接取得第三方的 access token
存取 API 時,server 需要驗證該 access token 是否有效
然後不希望每次 request 都要重驗 access token 有效性
驗證成功後建個 mapping 儲存在 cache
2. client 只要取得 authentication code 就好
再由 server 拿 code 去換 access token
server 成功取得 access token 後儲存在 cache
想請問實務上的實做方式是哪種?或是是其它方式?
第二個問題是
目前只會存取自己 web 的服務,不需要存取第三方的 API
那不管問題一如何取得 access token
是否可以重新建一個 JWT 給 client
例如我希望 token 的有效期限是 30 分鐘
從第三方的 token 取得需要的資訊,然後重新建一份 JWT 給 client
每次 request 檢查是否過期,再決定是 server 直接重取
或是請 user 再重新登入
以前都是碰 Struts2 / Spring MVC + JSP 的環境
現在對於 SPA / APP + RESTful API 的開發模式蠻陌生的
還有很多問題需要犛清,不過還是想先確認上述二個問題實做是否有誤
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.43.69.88 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/java/M.1593227626.A.365.html
請問是建議第2個方式比較好嗎
因為我們client開發人員認為他直接去拿第三方access token就好了
而server端基於不信任client傳來的資料,是一定要再驗證過的
若第三方的access token 被 user 以外的管道拿到
表示該管道就可以呼叫第三方的API取得user的資料了的意思
所以還是client拿code,讓server去換access token比較好嗎
會部署在多server的環境,所以選擇傳token的方式
session的方式沒做過在多server的環境,除非存資料庫吧
或是要查一下多server的session實做方式
還有很多安全性方面的問題要確認,先感謝了
※ 編輯: jtorngl (114.43.69.88 臺灣), 06/27/2020 17:29:33