oauth是open authorization(開放授權)的縮寫,允許使用者授權給第三方應用訪問服務提供商所提供的使用者資源,並且保證授權是安全的。
官網位址
四種角色:
兩種實體:
(a) 使用者開啟客戶端,客戶端請求使用者授權
(b) 使用者同意授權給客戶端
(c) 客戶端使用獲取的授權,向認證伺服器請求令牌
(d) 認證伺服器對客戶端進行認證,並驗證授權,確認有效後發放令牌給客戶端
(e) 客戶端使用令牌,向資源伺服器請求資源
(f) 資源伺服器驗證令牌,確認有效後處理請求
客戶端必須獲取使用者的授權,才能夠獲取令牌。oauth定義了四種獲取授權的方式:
是功能最齊全、流程最嚴謹,也是最常用的授權模式。
(a) 使用者通過使用者**訪問客戶端,客戶端將其重定向到認證伺服器
例項:
get /authorize?response_type=code&client_id=s6bhdrkqt3&state=xyz
(b) 使用者選擇是否授權給客戶端
(c) 如果使用者授權,認證伺服器將使用者重定向到客戶端事先指定的uri,並附加乙個授權碼
例項:
http/1.1 302 found
location:
&state=xyz
(d) 客戶端使用授權碼和重定向uri,向認證伺服器申請令牌
例項:
post /token http/1.1
(e) 認證伺服器驗證授權碼和uri,確認無誤後,向客戶端發放令牌
例項:
http/1.1 200 ok
cache-control: no-store
pragma: no-cache
不通過第三方應用的伺服器,直接在瀏覽器中進行,不需要使用授權碼。
(a) 使用者通過使用者**訪問客戶端,客戶端將其重定向到認證伺服器
例項:
get /authorize?response_type=token&client_id=s6bhdrkqt3&state=xyz
(b) 使用者選擇是否授權給客戶端
(c) 如果使用者授權,認證伺服器將使用者重定向到客戶端事先指定的uri,並在uri的hash部分包含訪問令牌
例項:
http/1.1 302 found
location:
&state=xyz&token_type=example&expires_in=3600
(d) 瀏覽器向資源伺服器傳送請求,但不包含hash值
(e) 資源伺服器返回乙個網頁,包含獲取hash值中令牌的**
(f) 瀏覽器執行指令碼,獲取令牌
(g) 瀏覽器將令牌傳送給客戶端
使用者必須向客戶端提供使用者名稱和密碼,存在較大的風險。通常只有在認證伺服器無法通過其他方式進行授權時,才會考慮使用此種模式。
(a) 使用者向客戶端提供使用者名稱和密碼憑證
(b) 客戶端將使用者名稱和密碼憑證傳送給認證伺服器,並請求令牌
例項:
post /token http/1.1
host: server.example.com
authorization: basic czzcagrsa3f0mzpnwdfmqmf0m2jw
grant_type=password&username=johndoe&password=a3ddj3w
(c) 認證伺服器確認無誤後,向客戶端發放令牌
由客戶端直接向服務提供商進行認證,其實並不存在授權問題。
(a) 客戶端向認證伺服器提供身份憑證,並請求令牌
例項:
post /token http/1.1
host: server.example.com
authorization: basic czzcagrsa3f0mzpnwdfmqmf0m2jw
grant_type=client_credentials
(b) 認證伺服器確認無誤後,向客戶端發放令牌
如果使用者訪問的時候,客戶端所獲取的訪問令牌已經過期,則需要使用重新整理令牌重新申請新的訪問令牌。
客戶端傳送的http請求,包括以下引數:
例項:
post /token http/1.1
host: server.example.com
authorization: basic czzcagrsa3f0mzpnwdfmqmf0m2jw
grant_type=refresh_token&refresh_token=tgzv3jokf0xg5qx2tlkwia
Oauth入門學習
accesstoken refresh機制和採用固定的 新的標準在認證和授權方面,涉及到四個角色 oauth2.0 有許多種流程,分別適應不同的第三方應用,並且這些流程數目還在不斷增加和完善中,乙個 可以實現一種或多種流程,以下是6種全新的流程 user agent flow 客戶端執行於使用者 內...
一文讀懂OAuth2 0 入門
1.起源 oauth 2.0是授權用的工業化標準協議,是由ietf 國際網際網路工程任務組 oauth團隊開發,聚焦於簡化三方應用的授權流程 web應用 桌面應用 移動端應用 物聯網應用 主要作用是 為第三方應用頒發乙個令牌,授權其可在短期內訪問我方資料。2.原理 2.1 流程 2.1 第三方應用發...
Flask入門二 快速入門
from flask import flask 路由裝飾器 defhello world 檢視函式 return hello world 返回乙個字串 if name main 把程式儲存為hello.py 用python直譯器執行 python hello.py running on訪問 會看見 ...