2013-07-05 83 views
2

我正在使用資源所有者密碼憑據流來驗證我的iOS應用程序是否符合我提供的API。這工作正常,我得到訪問令牌,並可以刷新令牌到期。如何使用OAuth2驗證多個客戶端上的同一用戶?

但是,如果用戶在多個客戶端上安裝應用程序,例如iPhone和iPad,並使用相同的用戶名和密碼進行身份驗證,他們都獲得相同的訪問令牌。首先刷新訪問令牌的客戶端使用新的訪問令牌正常工作,但其他客戶端不再像以前的訪問令牌一樣工作。

顯而易見的解決方案是,允許用戶(資源所有者)擁有多個訪問令牌,並在每次進行身份驗證時返回一個新的訪問令牌。這就提出了我應該如何清理舊訪問令牌的問題?

還是有更好的方式在多個客戶端上驗證相同的用戶?

回答

1

有幾種處理令牌的策略,我建議使用自包含的令牌。就我所知,大多數大型OAuth2提供商都使用此解決方案。自包含令牌將所有重要的令牌信息與一些安全數據一起打包,例如參見JSON Web Tokenssignatureencryption。獨立令牌不需要存儲在數據庫中,隨着時間過期,但仍然可以安全地驗證。但是,如果沒有數據庫,撤銷這些令牌並不是微不足道的。

使用自包含的令牌,您的每個客戶端都可能擁有自己的訪問令牌,並且您不必打擾清理數據庫中的舊令牌。