springcloud玩轉單點登錄【oauth】


   隨着公司項目的龐大,單點登錄變得尤為重要,那么怎么實現單點登錄,下面已oauth為標准實現單點登錄。

【特別鳴謝:魔樂科技,附上官網:www.mldn.cn】

 

1:項目組織結構

本項目為oAuth修改的啟動項目結構,在該結構之中基本定義模塊如下:
1、microauth:定義公共的父pom文件,用於所有相關依賴包配置;

2、microauth-api:定義公共Service接口,同時在該接口上還提供有相應的Fallback配置、Feign配置注解、VO類定義;

3、microauth-eureka-server:Eurea注冊與發現服務,所有微服務都注冊到此處,該服務端口為7001;

4、microauth-provider-dept-8001:定義部門服務信息,該服務使用mldn8001數據庫,同時提供有配置腳本,在本服務之中將主要結合MyBatis進行數據庫操作,該微服務使用的是8001端口;

5、microauth-zuul-gateway-9501:zuul網關服務接口,運行在9501端口;

6、microauth-consumer:消費端微服務,主要通過zuul調用dept微服務;

所有的服務均沒有配置Spring-Security開發包,只提供一個基本訪問處理流程。

修改hosts文件,本次使用到的主機名稱如下:

127.0.0.1 dept-8001.com
127.0.0.1 eureka-7001.com
127.0.0.1 gateway-9501.com
127.0.0.1 oauth-8080.com
127.0.0.1 consumer.com

 

項目的組織結構如下圖,圖中的oauth認證中心就是我們說的單點登錄服務器,提供認證、授權保存服務;

下面要演示的就是怎么通過web客戶端【springboot】訪問我們的微服務,這里就是如圖的部門微服務;

服務提供者暴露的接口如果是裸露的這是多么可怕的事情,所以我們要做的就很簡單,怎么去訪問我們這個受保護的服務;

現在的系統大都要求支持三高:高並發、高可用、高性能

所以,服務不做集群是不行的,集群你得有多個服務節點不是,你項目當中會有多少個微服務,你每一個微服務都要有多個節點的話,那我客戶端怎么訪問你哦?

注冊中心幫我們解決了這一個難題,把你所有的服務都放到一個中心的位置去,我服務的調用者只關心你這個注冊中心就可以了,此圖為簡要說明,先畫了一個注冊中心,

按理,注冊中心也得集群處理。此圖先不說明。

有的注冊中心還不行,還是不能實現負載均衡呀,所以feign就出來了,feign是個啥玩意,它就是轉門搞負載均衡的,讓你的遠程調用就像是本地的接口調用一樣。

有的feign還不夠,你還得來一層代理網關,幫你代理轉發,那個東西就叫zuul。

 

 

 

2:目錄結構

 

 

3:演示

a:啟動注冊中心,將部門微服務、和代理網關注冊到注冊中心當中

 

 b:此時訪問部門微服務是訪問不了,因為加了安全認證

 

 

 

c:啟動CAS單點登錄服務器並訪問

http://mermaid:hello@oauth-server.com:8080/oauth/authorize?client_id=cmldn&response_type=code&redirect_uri=http://www.baidu.com

 

 

 

 

d:使用curl 獲取access_token

 

curl -X POST -H "Content-Type:application/x-www-form-urlencoded" -d "grant_type=authorization_code&code=cKXoVK&redirect_uri=http://www.baidu.com" "http://cmldn:cjava@oauth-server.com:8080/oauth/token"

 

 

 

 

 

e:拿到access_token就可以訪問我們受保護的資源了

 

 

 

 

f:訪問zuul代理網關需要登錄

 

 

 

輸入用戶和密碼就可以登錄了

 

g:通過客戶端【springboot】訪問

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM