精華區beta NetSecurity 關於我們 聯絡資訊
2017.W42 - OAuth 2 > 感謝師 (ㄏㄞˋ) 傅 (ㄎㄜˋ) 賜我吃穿 ## 前言 ## 認證系統真的很多 每個服務都需要記帳號密碼實在是很煩惱 既擔心 EYNY 論壇的密碼洩漏 影響 gmail 的安全性 又擔心密碼太多 會忘記 FC2 的登入密碼 ## 認證 ## OAuth 2[1] 是一個繼承 OAuth[1] 的一種認證標準 主要讓用戶 (Client) 透過受使用者信任的第三方 (OAuth Provider) 提供認證的服務 在 OAuth 的腳色可以分為三種 - 使用者 (End User) - 用戶 (Client) - 服務提供者 (OAuth Provider) 藉由使用者先向提供者認證之後 透過轉址導回到用戶的服務網站 詳細的流程 (Code Grant) [3] 可以分解成以下幾種步驟 而最終用戶透過從使用者獲得的一次性 Code 來跟服務提供者換 Access Token 這個 Access Token 則是代表使用者在服務提供者的一個 Token 可以透過這個 Token 獲得使用者的相關資料 使用者 用戶 服務提供者 登入 ----------------> 重導向:登入 ------------------> 重導向:Code <------------------------------------------ 重導向:Code ----------------> 背景: Code -------------------> 背景:Access Token <------------------- Code Grant 是四種 OAuth 2 定義中換取 Access Token 的方式之一 也是大多數之名 OAuth 2 provider 提供的方式之一 像是 Facebook[4]、Google[5]、GitHub[6] 等 使用 OAuth 2 對於三方面來說都是擁有好處 但在使用 OAuth 2 的過程中需要注意潛在的安全性風險: 過多的資訊請求 與 釣魚網站 過多的資訊請求 代表在用戶跟服務提供者要求過多的權限 正常的權限請求大致包含:名稱、e-mail 等 而過多的請求則是包含發文權限、歷史紀錄查詢等絕大多數不需要的權限 [1]: https://tools.ietf.org/html/rfc6749 [2]: https://zh.wikipedia.org/wiki/OAuth [3]: https://tools.ietf.org/html/rfc6749#section-4.1 [4]: https://developers.facebook.com/docs/facebook-login/ [5]: https://developers.google.com/identity/protocols/OAuth2 [6]: https://developer.github.com/apps/building-integrations/setting-up-and-registering-oauth-apps/ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.193.122.171 ※ 文章網址: https://www.ptt.cc/bbs/NetSecurity/M.1508255043.A.B11.html