作者CMJ0121 (不要偷 Q)
看板NetSecurity
標題[閒聊] 2017.W42 - OAuth 2
時間Tue Oct 17 23:43:58 2017
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://webptt.com/m.aspx?n=bbs/NetSecurity/M.1508255043.A.B11.html
1F:推 holishing: push 10/23 20:50