oauth2.0是一套標準。這個標準解決了這樣的乙個問題。
給第三方應用乙個臨時密碼,過期作廢,而且這個密碼的訪問許可權可由我隨時取消。這樣就足夠安全了。這個臨時密碼就是access_token。
發放access_token的方法就多種多樣了,這些方法叫做授權模式。
oauth2為我們提供了四種授權方式:
1.密碼模式(resource owner password credentials)
為遺留系統設計(支援refresh token)
2.授權碼模式(authorization code)
正宗方式(支援refresh token)
3.簡化模式(implicit)
為web瀏覽器應用設計(不支援refresh token)
4.客戶端模式(client credentials)
為後台api服務消費者設計(不支援refresh token)
oauth定義了四種角色:resource owner(資源所有者)
resource server(資源伺服器)
client(客戶端):代表資源所有者並且經過所有者授權去訪問受保護的資源的應用程式
authorization server(授權伺服器):在成功驗證資源所有者並獲得授權後向客戶端發出訪問令牌
(a)使用者訪問客戶端,後者將前者導向認證伺服器。簡化,是對授權碼的簡化。流程如下:(b)使用者選擇是否給予客戶端授權。
(c)假設使用者給予授權,認證伺服器將使用者導向客戶端事先指定的"重定向uri"(redirection uri),同時附上乙個授權碼。
(d)客戶端收到授權碼,附上早先的"重定向uri",向認證伺服器申請令牌。這一步是在客戶端的後台的伺服器上完成的,對使用者不可見。
(e)認證伺服器核對了授權碼和重定向uri,確認無誤後,向客戶端傳送訪問令牌(access token)和更新令牌(refresh token)。
如果是純網頁的版本,也可以將user-agent看作授權伺服器的登入頁面,client看作資源服務的頁面。
客戶端client對於資源的訪問工作,將交給user-agent端完成。這種方式,會將client端的資訊,洩漏給user-agent端。
如果只使用瀏覽器(user-agent和client都是瀏覽器),那麼user-agent相當於是登入頁面,client相當於是目標頁面。這樣做,在單一平台下面是可用的,不能夠支援賬號的跨平台呼叫。
密碼模式也是比較常用到的一種,客戶端向授權伺服器提供使用者名稱、密碼然後得到授權令牌。不過這種模式有種弊端,我們的客戶端可以儲存使用者輸入的密碼,對於單一平台的使用者來說,當然是沒有問題的。但是在多個平台之間使用的話,有密碼洩漏的風險。流程如下圖所示:
這是使用者授權最簡單,最經典的應用場景。不能做到,賬號的跨平台授權和使用。
客戶端模式是客戶端以自己的名義去授權伺服器申請授權令牌,並不是完全意義上的授權。如下圖所示:
就好比windows正版軟體,有了客戶端名稱和客戶端密碼,就可以一直能夠通過認證,獲取使用者許可權。
1.理解oauth 2.0
2.oauth2四種授權模式認證流程
OAuth2 0 授權碼方式
參考 以某csdn使用某wechat登入為例,模擬場景 授權碼 authorization code 方式,指的是第三方應用先申請乙個授權碼,然後再用該碼獲取令牌。這種方式是最常用的流程,安全性也最高,它適用於那些有後端的 web 應用。授權碼通過前端傳送,令牌則是儲存在後端,而且所有與資源伺服器的...
OAuth2 0認證授權
授權碼模式 authorization code 是功能最完整 流程最嚴密的授權模式。它的特點就是通過客戶端的後台伺服器,與 服務提供商 的認證伺服器進行互動。client id x client secret x response type 表示授權型別,必選項,此處的值固定為 code clie...
OAuth 2 0授權框架
背景介紹 oauth2.0授權框架支援第三方應用程式以獲取對http服務的有限訪問權,通過協調批准互動來代表資源所有者,在資源所有者和http服務之間,或者通過允許第三方應用程式代表自己獲取訪問許可權。這個規範取代並淘汰了所描述的oauth1.0協議 一 傳統模式的身份驗證模型 在傳統的客戶端 伺服...