在 OAuth (3) Implicit grant 當中我們可以看到 access token 其實暴露在外,因此如果要降低風險,那麼我們可以讓這個 access token 的續存時間變得很短。
然而這樣所帶來的影響是,如果使用者想要再次請求資源,那麼就需要再次經過 authorization 的流程,也就是使用者要在 Authorization server
再次輸入帳號密碼以通過驗證,以拿到新的 access token。
要提升使用者體驗的其中一種方式是,讓 Authorization server
默默地幫使用者完成上面這件事情,也就是 Silent Authentication。若 Client
手上的 access token 過期,並且再次發出請求的時候,這時 Authorization server
就會檢查使用者的 session 是否還存在,若有,則會回送新的 access token,讓 Client
能夠再次順利取得資源。
這麼做的好處是,系統可以將 access token 的續存時間縮短,以降低風險,同時在背後持續更新 access token,讓使用者在不用輸入帳號密碼的情況下,持續使用服務。
這個做法很像使用 refresh token 來進行 token rotation,然而在 Implicit grant 的流程下,如果使用 refresh token,那麼 refresh token 也會像 access token 暴露在外。同時,原本 refresh token 的設計就是會有比 access token 更長的續存時間,如此一來,就無法降低風險,反而更有提升安全風險的可能。