基於spring boot2.0+spring security +oauth2.0+ jwt微服務架構


github地址:https://github.com/hankuikuide/microservice-spring-security-oauth2

項目介紹

該項目是一個演示項目,主要演示了,基於spring boot2.0+spring security +oauth2.0+ jwt構建的,單點登錄SSO和統一認證和授權的微服務架構項目

該項目是一個多模塊項目:

authorization-server:是一個認證服務器

  • 通常情況下,認證服務器也是一個資源服務器用於向其他服務提供用戶及權限信息。
  • 標准的OAuth2.0提供了四種認證模式,所以認證服務器也應該支持這四種認證模式,具體采用何種模式,應由客戶端根據業務需求決定, 如SSO比較適合授權碼模式,客戶端有自己的登錄時,適合密碼模式,服務間的認證可以用客戶端模式。
  • 為了提高token的安全性,及減輕認證服務器的壓力,采用token+jwt的方式,演示代碼沒有用rsa。

client:是客戶端的應用程序

網上多數的項目客戶端都是采用純js寫,或用postman發請求,和實際項目的應用還是有差距的,這里也是采用spring boot的實現。 主要功能在於:

  • 使用授權碼模式進行認證。
  • 使用OAuth2RestTemplate發送請求給認證服務器和資源服務器,
  • 結合Feign實現loadbalance.

client2:也是客戶端的應用程序

網上多數的項目客戶端都是采用純js寫,或用postman發請求,和實際項目的應用還是有差距的,這里也是采用spring boot的實現。 主要功能在於:

  • 使用授權碼模式進行認證。
  • 使用OAuth2RestTemplate發送請求給認證服務器和資源服務器,
  • 結合Zuul網關實現請求轉發給資源服務器.這也是區別於client的地方

##client與client2的主要作用:

  • 演示SSO,只要一個客戶端登錄成功,另一個應用,也就自動登錄成功。
  • 演示SSO,只要一個客戶端退出,另一個應用,也就自動退出。
  • 分別用Feign和Zuul網關實現對資源服務器的訪問

resource-server:是資源服務器,也是微服務

資源服務器只實現了一個,另一個同時,只是注意jwt的配置即可。

resource2-server:是資源服務器,也是微服務

同上

##兩個資源服務器的意義在於:

  1. 通常微服務架構中,微服務都是多個
  2. 微服務之間通過會有訪問,這里使用的是feign:resource訪問resource2
  3. 微服務之間應該也應該是有認證,這里使用是client_credentials模式

主要集成了以下技術和工具

  • Spring boot2.0
  • Spring Security
  • OAuth2.0
  • JWT
  • Feign
  • Zuul
  • cors






免責聲明!

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



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