Spring Cloud Security+OAuth2+SSO快速上手-客戶端
準備項目開發環境:JDK1.8,Maven,Eclipse
該篇文章主要提供Spring Cloud Security基於OAuth2.0協議中的授權服務使用方的配置,通篇配置全部基於內存存儲方式進行,後續會一步一步修改成基於jdbc、redis的存儲方式。
上篇文章配置了最主要的授權服務端,接下來就配置客戶端的使用,在上次的enjoy-parent下新建maven module ,項目的結構如下:
配置客戶端,我們需要實現SSO(單點登陸)功能,這樣才能夠方便的在客戶端中去訪問資源服務端暴露的介面。
在客戶端我們需要配置一份client_details信息,來源於我們在授權服務端註冊的client,如圖:
需要做的是將授權服務端在內存註冊的client_details信息,以yml文件屬性的方式配置到客戶端里,以實現單點登陸以及客戶端獲取token,具體配置如下:
接下來,修改客戶端代碼配置,添加@EnableOAuth2Sso註解,配置項目單點登陸所需的配置,配置如下:
啟動ClientApplication,查看日誌列印,正常啟動後就代表配置已經完成,此時打開瀏覽器,錄入配置好的單點監聽鏈接http://127.0.0.1:8091/client/sso/login請求,客戶端集成了SSO後,客戶端會根據yml中的配置信息,自動重定向去授權服務端獲取授權碼,請求流程如下:
授權服務端發現未登錄,則會提示你登錄,錄入之前在授權服務端註冊的用戶信息,如圖:
錄入註冊的用戶信息,授權服務會彈出是否授權客戶端訪問授權服務的信息,如圖:
選擇Approve(贊成),點擊Authorize(授權),授權服務端就會返回到客戶端首頁,並回調客戶端http://127.0.0.1:8091/client/sso/login,帶上授權服務下發授權碼,流程如下:
授權服務回調客戶端配置的redirect_uri時帶上的code,客戶端內部會拿到code並自動去獲取access_token,並通過Oauth2RestTemplate中繼下去,在通過Oauth2RestTemplate調用資源服務端的任何URL時,系統內部會自動帶上授權請求頭
Authorization Bearer access_token 信息,這樣就達到了SSO登錄並中繼token信息。
到此,整套基於內存的 客戶端+SSO+授權服務流程就已經到此完成。
TAG:半吊子技藝 |