Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

OAuth 2.0

No description
by

Hare Vole

on 20 December 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of OAuth 2.0

簡單易懂的 OAuth 2.0
老方法問題多
第三方程式必須儲存 Resource Owner 的帳號密碼,通常是明文儲存。

Server 必須支援密碼認證,即使密碼有天生的資訊安全上的弱點。

第三方程式會得到幾乎完整的權限。

Resource Owner 無法只撤回單一個第三方程式的存取

任何第三方程式被破解 (compromized),就會導致使用該密碼的所有資料被破解。
基本流程
四種內建授權流程 (Grant Flows)
Authorization Code Grant Type Flow

Implicit Grant Type Flow

Resource Owner Password Credentials Grant Type Flow

Client Credentials Grant Type Flow
技術要求
必須全程使用 TLS (HTTPS)

User-Agent 要支援 HTTP Redirection
哪些服務有提供OAuth?
OAuth 2.0 裡的角色
Resource Owner
- 資料擁有者,通常是人類(
User
)

Resource Server
- Client 從這裡拿資料,即
API

Client
-
App
,要存取User資料的程式

Authorization Server
- 總管一切授權事物
資料定義
Authorization Grant 代表了 Resource Owner 授權 Client 可以去取得 Access Token 來存取 Protected Resource 。

Access Token 用來存取 Protected Resource ,是一個具體的字串(string),其代表特定的 scope (存取範圍)、時效。

Refresh Token 用來向 Authorization Server 重新取得一個新的 Access Token 的 Token ,像是現有的 Access Token 過期而無效,或是權限不足,需要更多 scopes 才能存取別的 Resource。
存取 Protected Resource 的方式
Client 要出示 Access Token 來向 Resource Server 存取 Protected Resource。

具體出示機制不定義,通常是用 Authorization header 搭配該 Access Token 定義的 auth scheme ,如 Bearer Token (RFC 6750) 。

Resource Server 必須驗證 Access Token 並確認其尚未過期、確認其 scope 包含所要存取的 resource 。

具體驗證機制不規定,通常是 Authorization Server 和 Resource Server 之間互相傳輸資料 (interaction) 以及同步化 (coordination)。
錯誤的回應方式
要是 Resource Request 失敗,則 Server 最好要提示錯誤 。至於 error code ,登記的方式規定在 Section 11.4。

任何新定義的 Authentication Scheme (如 Bearer Token)都最好要定義一個機制來提示錯誤,其 value 要使用 OAuth 2.0 spec 裡面規定的方式定義。

新定義的 Scheme 可能會只使用子集。

如果 error code 用具名參數(如 JSON 之類的 dictionary)回傳,則其參數名稱必須使用 error。

要是有個 Scheme 可以用在 OAuth 但不是專門設計給 OAuth ,則可以用一樣的方式來把它裡面的 error code 清單拿進來用。

新定義的 Scheme 可以用 error_description 和 error_uri ,其意義要跟 OAuth 定義的一致。
各大網站 OAuth 2.0 實作差異
OAuth 是什麼?
http://bluehusky.mousie-bunny.com/isabella/
Client的分類
Web Application:
跑在 Web Server 上面,直接透過 Web Server 來存取Resource Owner授權後所取得的 AccessToken。

User-Agent-based Application:
Client 的程式是從 Web Server 下載到 Resource Owner 的 User-Agent 來執行的。

Native Application:
安裝在 Resource Owner 的設備上,也在其上執行。
建置我們的 OAuth ?
定義
Resource Owner ?
Client ?
Resource ?

設計
Grant Flows (授權流程)
Access Token (格式)
Access Token 的核發與換發
Q & A
Authorization Code Grant Flow
http://bluehusky.mousie-bunny.com/isabella/
https://apps.facebook.com/candycrush/?fb_source=appcenter_toplist&fb_appcenter=1
Aaron Ting
Agenda
OAuth 是什麼

Oauth 2.0 通訊協定怎麼走

建置我們的OAuth ?

透過
OO

授權

程式

說 :你可以去
母站
拿我的資料
App
API
Website
User
App 要你輸入
帳號密碼
,還宣稱不會
亂搞


你要
信任
App 不會拿你密碼亂搞

就算App很乖,密碼
被幹走
還是沒救

不管你信不信,我是
不信
......
問題與限制
OAuth 2.0 裡的角色
Resource Owner
- 可以授權別人去存取 Protected Resource 。如果這個角色是人類的話,則就是指使用者 (end-user)。

Resource Server
- 存放 Protected Resource 的伺服器,可以根據 Access Token 來接受 Protected Resource 的請求。

Client
- 代表 Resource Owner 去存取 Protected Resource 的應用程式。 "Client" 一詞並不指任何特定的實作方式(可以在 Server 上面跑、在一般電腦上跑、或是在其他的設備)。

Authorization Server
- 在認證過 Resource Owner 並且 Resource Owner 許可之後,核發 Access Token 的伺服器。
Authorization Server
Full transcript