在接下來的內容中,碼農哥會先給大家具體介紹下oauth2.0的基本原理,然後再通過spring boot實現一套遵循oauth2.0規範的sso單點登入系統!
為了便於理清認證流程中的各個角色,在oauth2.0協議中定義了以下四個角色:
1)、resource owner(資源擁有者)
2)、resource server(資源伺服器)
3)、client(客戶端)
代表資源所有者及其授權發出對受保護資源請求的應用程式。在上面的例子中豆瓣網就是這樣的角色。
4)、authorization server(授權伺服器)
oauth2.0定義了四種授權模式,它們分別是:
下面我們就分別來分析下這四種客戶端授權模式的流程和特點吧!
授權碼模式(authorization code)
簡化模式(implicit grant type)
從上面的流程中可以看到在第4步使用者完成授權後,認證伺服器是直接返回了access_token令牌至使用者瀏覽器端,而並沒有先返回授權碼,然後由客戶端的後端服務去通過授權碼再去獲取access_token令牌,從而省去了乙個跳轉步驟,提高了互動效率。
但是由於這種方式訪問令牌access_token會在url片段中進行傳輸,因此可能會導致訪問令牌被其他未經授權的第三方擷取,所以安全性上並不是那麼的強壯。
密碼模式(resource owner password credentials)
以上模式邏輯主要在伺服器端實現,無法避免客戶端應用程式對授權方身份資訊的儲存,所以一般情況下是不會採用這種授權模式的。
客戶端模式(client credentials)
客戶端模式是指客戶端以自己的名義,而不是以使用者的名義,向「服務提供方」進行認證。嚴格地說,客戶端模式並不屬於oauth2.0協議所要解決的問題。在這種模式下,使用者並不需要對客戶端授權,使用者直接向客戶端註冊,客戶端以自己的名義要求「服務提供商」提供服務。
這種類似於之前共享單車比較火的情況下,出現的全能車的模式,即使用者向全能車註冊,全能車以自己平台設立的共享賬戶去開各種品牌的單車。
OAuth2 0的認證流程
oauth2.0的認證流程 在oauth2.0的處理流程,主要分為以下四個步驟 1 得到授權碼code 2 獲取access token 3 通過access token,獲取openid 4 通過access token及openid呼叫api,獲取使用者授權資訊 上面是流程的大概四個步驟,在下面...
OAuth2 0認證授權
授權碼模式 authorization code 是功能最完整 流程最嚴密的授權模式。它的特點就是通過客戶端的後台伺服器,與 服務提供商 的認證伺服器進行互動。client id x client secret x response type 表示授權型別,必選項,此處的值固定為 code clie...
理解OAuth2 0認證
oauth協議為使用者資源的授權提供了乙個安全的 開放而又簡易的標準。與以往的授權方式不同之處是oauth的授權不會使第三方觸及到使用者的帳號資訊 如使用者名稱與密碼 即第三方無需使用使用者的使用者名稱與密碼就可以申請獲得該使用者資源的授權,因此oauth是安全的。oauth是open author...