1. 程式人生 > >OAuth 2.0 筆記 (6) Bearer Token 的使用方法

OAuth 2.0 筆記 (6) Bearer Token 的使用方法

文章目錄

場景

  • 最近在研究oauth2認證, 剛好這篇文章很優秀, MARK一下

原文地址

  • 原文地址 https://blog.yorkxin.org/2013/09/30/oauth2-6-bearer-token.html

摘選片段

安全性建議的總結
Section 5.3 Summary of Recommendations

要藏好 Bearer Token
Client 實作必須確保 Bearer Token 不會外洩給無關人士,因為他們可以以此來存取受保護的 resources。利用 Bearer Token 時,這是首要的安全性考量,且優先於其他更細節的建議。

要驗證 TLS 的憑證鏈
當 Client 發 request 索取受保護的 resources 的時候,Client 必須驗證 TLS 的憑證鏈。若做不到的話,可能會引發 DNS 劫持,導致 Token 被壞人偷走。

全程使用 TLS (https)
當 Clients 利用 Bearer Token 發 request 時,Client 必須一直使用 TLS (RFC5246) (https) 或同等的安全傳輸。若做不到的話, Token 會曝露在各種攻擊方式,讓壞人可以得到意料之外的存取權。

不要把 Bearer Token 存在 Cookie
絕對不可以把 Bearer Token 存在可以明文傳輸 (sent in the clear) 的 Cookie 裡面(明文傳輸是 cookie 傳輸的預設方式)。若存在 Cookie 裡面,必須要小心 Cross-Site Request Forgery 。

要核發短時效的 Bearer Token
核發 Token 的伺服器最好是核發短時效的 Bearer Token (一小時以內),尤其是發給跑在瀏覽器裡面的 Client ,或是其他容易發生資訊外洩的場合。利用短時效的 Bearer Token 可以降低 Token 外洩時的衝擊。

要核發有區分使用範圍的 Bearer Token
Token 伺服器最好要核發包含 audience restriction, scoping their use to the intended replying party, or set of relying party 的 Token 。

不要用 Page URL 來傳送 Bearer Token
Bearer Token 最好不要從 URL 來傳送(例如 query parameter),而最好是從有保密措施的 HTTP header 或是 body 來傳輸※。瀏覽器、伺服器等軟體可能不會把歷史記錄或資料結構給妥善加密。如果 Bearer Token 透過 URL 傳輸,則壞人就有可能可以從歷史記錄取得之。