2016-01-09 98 views
1

使用刷新令牌時,我有關於安全性的問題。假設我有一個可以訪問用戶的Google日曆的Web應用程序。因此我需要執行以下步驟:刷新令牌是否鏈接到Web應用程序客戶端ID /客戶端密鑰?

  1. 從Google獲取客戶端ID和客戶端密鑰。
  2. 我的web應用程序的用戶授予他的日曆許可。
  3. 我得到一個刷新和訪問令牌。
  4. 我將訪問令牌發送到日曆API並訪問用戶的日曆。

我可以用保存在數據庫中的刷新令牌刷新訪問令牌。

如果有人訪問我的數據庫或者一般情況下會有我用戶的刷新標記,會發生什麼情況? 攻擊者可以使用刷新令牌訪問日曆,還是鏈接到我的客戶端ID和客戶端密鑰的令牌?當我的Web應用程序使用我的客戶端ID和客戶端密鑰通過OAUTH2 API進行身份驗證時,是否可以訪問用戶日曆?

謝謝

回答

0

是的,它是/不應該是可以使用刷新令牌與不同的客戶端比它發出來。

刷新標記通常是不透明的字符串,但在發行者中它們應該鏈接到經過身份驗證的客戶端。這就是爲什麼當你使用刷新令牌時你需要發送你的客戶端是祕密的。

0

假設客戶端能夠保留攻擊者的client_idclient_secret,常規方法是以相同的方式處理並存儲refresh_token。因此,即使技術上無法獲得沒有客戶端證書的新訪問令牌,實際上攻擊者也會以與獲取刷新令牌相同的方式獲取客戶端證書。

+0

那麼唯一的可能就是停用/更改Web應用程序的客戶端ID? – Progger

+0

如果你能夠檢測到刷新令牌被盜,你應該撤銷它;如果client_id/client_secret可能與它一起被盜,則應該旋轉客戶機密鑰;請注意,client_id不是祕密,任何人都可以獲得它 –

+0

好的,謝謝澄清 – Progger