Spring Authorization Server,【Spring cloud 系列】:構建Eureka Server (02)

 2023-12-06 阅读 28 评论 0

摘要:一、概述   上篇已經構建出了Spring cloud 的基本骨架,在本文中將介紹如何快速構建 Eureka Server端口 服務注冊于發現,后續的文章都會使用 microserver-parent項目作為parent信息,不了解的朋友建議從上一章開始看起? ps:作者能力有限,

一、概述

  上篇已經構建出了Spring cloud 的基本骨架,在本文中將介紹如何快速構建 Eureka Server端口 服務注冊于發現,后續的文章都會使用 microserver-parent項目作為parent信息,不了解的朋友建議從上一章開始看起? ps:作者能力有限,表達能力不足,這里將不會講述概念性的講解,想了解概念的朋友可自行百度查閱或官網查閱自行理解,同時盡可能的照顧到新人朋友,教大家如何從官網中學習一門技術。

  本文所有Demo都將上傳至GitHub中方便各位朋友查看學習,如您對本人的編碼風格或其他建議可以聯系博主。

二、目錄結構

  

Spring Authorization Server、?

三、構建Eureka Server

  1)使用IDEA 快速構建

  

  2)Spring cloud 官網看下是如何將 Eureka 添加到項目中去。

cloudfoam技術詳解?    

 從官方這段話的意思來看,需要我們為Spring boot 項目 引入jar 包

    <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency>

四、配置 Eureka Server 與啟動 Server 服務

  1)將項目中生成的 application.properties 修改為 yml? 格式

  2)從官網的說明,我們看到有個?@EnableEurekaServer?注解,也就是說我們需要對我們項目的啟動類添加該注解作為Server端

eureka獲取服務列表、  

  3)如何配置 Eureka Server信息,從官網中我們可以看到,Eureka 服務 是分為高可用和單機的兩種模式,從官方給的配置信息來看,有兩處不同的地方

  左圖單機版本,右圖高可用版

  ? ? ? ? ? ?

springcloud 教程,  從上圖中我們看到 eureka.client 發現?registerWithEureka 與?fetchRegistry 從字面上不難理解,registerWithEureka 是否將自身注冊到Eureka Server 中,fetchRegistry 是否從Server 獲取注冊表,本文將采用單機版的作為講解,同時可以看看官方配置?Eureka的其他配置,由于配置信息過多也不做介紹了,我們在這里直接直接使用單機版的配置。啟動項目看看效果

  

?

五、添加用戶認證

  1)從官網看到如果需要添加安全認證的話就需要對 defaultZone 這里進行改造 為 user:password@ip:port 這種格式

eureka客戶端配置,?

  2)引入認證jar包,同時需要在我們的啟動類上添加新的注解?@EnableWebSecurity

    <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-security</artifactId></dependency>

  3)改造yml 在這里說明下,配置信息這塊碰到坑了,折騰了一會才搞清楚什么原因,只能說嘗鮮需謹慎

server:port: 8761spring:application:name: @project.artifactId@security:user:name: userpassword: password123
logging:level:root: infoeureka:instance:prefer-ip-address: true  #  將自身ip注冊到Eureka中instance-id:  ${spring.application.name}(${spring.cloud.client.ip-address}:${server.port})  # 自定義顯示方式 項目名稱(ip:port)client:register-with-eureka: false #  是否注冊到服務中 ,由于是單機版本,設置為 false , 如果需要配置高可用的 Eureka Server 需要設置為 truefetch-registry: false  #  是否從 Server 中獲取服務列表 ,設置為 false ,如果需要配置高可用的 Eureka Server 需要設置為 trueservice-url:defaultZone:  http://user:password123@localhost:8761/eureka/ # Eureka Server 地址 高可用的 需要相互注冊 多個地址用,號分割
server:enable-self-preservation: false  # 關閉Eureka 自我保護功能,生產環境不建議關閉eviction-interval-timer-in-ms: 4000 # 設置清理間隔時間 單位 (毫秒) 默認60*1000

?${spring.cloud.client.ip-address}??這段配置做個說明吧,在老版本中 是這樣寫的?${spring.cloud.client.ipAddress} 不知道在什么版本中更新了,最后翻看源碼看到這里的配置發生了細微的變動。

?

?

  4)解決 Eureka client 端口向服務端注冊時遇到的問題,問題說明:Eureka client 向Server注冊時,無用戶認證時可以正常獲取Server端進行注冊,添加用戶認證后失敗,困擾作者很久,最終無奈只能上 GitHub 上尋求答案,看到貢獻者在問題下方有做出這樣的回答,大概意思就是 Security 默認是開啟了 CSRF保護,同時也告訴我們解決方案就是關閉 CSRF保護,并且給出了關鍵性代碼,在這里感謝下可愛的貢獻者們,作者的話癆病又犯了 - 。-? ?再次強調一下 (嘗鮮需謹慎),廢話少說點吧,趕緊上關鍵性代碼

  

public class EurekaSecurityConfiguration {@Configuration@Order(SecurityProperties.BASIC_AUTH_ORDER)static class DefaultConfigurerAdapter extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {super.configure(http);http.csrf().disable();}}
}

  5)啟動client端口看看能不能注冊,從下圖可以看到已經成功。

?

轉載于:https://www.cnblogs.com/ncjava/p/8882465.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/191219.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息