2017.W42 - OAuth 2 - 資安

Table of Contents

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/

--

All Comments

Rachel avatarRachel2017-10-19
push