OAuth2中四種認證模式概念理解說明
這兩天在寫單點登錄的軟著材料,作爲一個前端開發,之前關注的一直都是前端實現登錄的邏輯,但是既然寫軟著,那隻能作爲一個整體來理解,而這一塊大部分的實現還是在後端(個人觀點),所以抽出兩天時間看了下後端的代碼,正好把相關的概念理解整理下:
這裏只是概念上的理解,沒有代碼實踐,後面有空最好還要調試代碼,實踐出真知嘛,要是有理解不對的地方歡迎指正。
文章目錄
整體流程
流程圖
整體流程說明
- 用戶打開客戶端,客戶端要求向資源所有者(即用戶)給予授權;
- 用戶同意授權;
- 客戶端得知用戶同意授權後,向授權服務器獲取授權;
- 授權服務器給予客戶端授權,並將授權碼(Access Token)即爲令牌下發給客戶端;
- 客戶端攜帶授權碼去請求資源服務器;
- 資源服務器將受限的資源開放給客戶端。
大多數情況下,認證服務器和資源服務者在一臺機器上,但是邏輯上屬於兩個概念,很多系統將其作爲單獨的微服務和其他資源服務區分開來。
OAuth2協議規定的4種授權類型
授權許可是表示客戶用來獲取訪問令牌的資源所有者授權的憑證。此規範協議規定了4種授權類型:
- authorization code(授權碼模式)
- implicit(簡化模式)
- resource owner password credentials(密碼模式)
- client credentials(客戶端模式)
授權碼模式
流程圖
授權碼模式流程說明
- 用戶訪問客戶端,客戶端通過用戶代理向認證服務器請求授權碼;
- 用戶同意授權;
- 認證服務器通過用戶代理返回授權碼給客戶端;
- 客戶端攜帶授權碼向認證服務器請求訪問令牌(AccessToken);
- 認證服務器返回訪問令牌;
- 客戶端攜帶訪問令牌向資源服務器請求資源;
- 資源服務器返回資源。
簡化模式
流程圖
簡化模式流程說明
- 用戶訪問客戶端,客戶端通過用戶代理向認證服務器請求授權碼;
- 用戶同意授權;
- 認證服務器返回一個重定向地址,該地址的url的Hash部分包含了令牌;
- 用戶代理向資源服務器發送請求,其中不帶令牌信息;
- 資源服務器返回一個網頁,其中包含的腳本可以獲取Hash中的令牌;
- 用戶代理執行腳本提取令牌;
- 用戶代理將令牌返回給客戶端;
- 客戶端攜帶令牌向資源服務器請求資源;
- 資源服務器返回資源。
密碼模式
流程圖
密碼模式流程說明
- 用戶向客戶端提供用戶名密碼;
- 客戶端將用戶名和密碼發給認證服務器請求令牌;
- 認證服務器確認無誤後,向客戶端提供訪問令牌;
- 客戶端攜帶令牌向資源服務器請求訪問資源;
- 資源服務器返回資源。
客戶端模式
流程圖
客戶端模式流程說明
- 客戶端向認證服務器進行身份認證,並要求一個訪問令牌;
- 認證服務器確認無誤後,向客戶端提供訪問令牌;
- 客戶端攜帶令牌向資源服務器請求訪問資源;
- 資源服務器返回資源。
參考資料
簡書介紹
實戰OAuth2博客
OAuth2介紹
博客介紹
博客介紹
ntianwei/p/9531091.html)
博客介紹