spring cloud(四) Eureka配置Httpbasic驗(yàn)證+Eureka配置詳解

目錄

一、 為EurekaServer配置Httpbasic驗(yàn)證

為了保證服務(wù)的安全性,我們?yōu)镋urekaServer配置Httpbasic驗(yàn)證,只有知道username和password的服務(wù)示例才能注冊(cè)到EurekaServer渤早。那接下來(lái)我們修改一下eureka_server項(xiàng)目缸濒,配置httpbasic驗(yàn)證锅知,然后為product_server和consume_server配置eureka_server的username和password妇拯。

1. 引入spring-boot-starter-security依賴

<!--
...忽略其他配置
-->
<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
</dependency>

2. 配置security

首先需要禁用csrf(cross site request forgery),當(dāng)spring security在classpath路徑下幻馁,它將要求每個(gè)客戶端請(qǐng)求帶上csrf token洗鸵,eureka客戶端通常不會(huì)擁有一個(gè)有效的csrf token,我們需要在配置中禁用對(duì)/eureka/**這個(gè)端點(diǎn)進(jìn)行csrf驗(yàn)證越锈。然后我們還需要開(kāi)啟httpbasic驗(yàn)證。此時(shí)我們便可以通過(guò)url中配置username和password膘滨,去驗(yàn)證客戶端的可靠性甘凭。為了簡(jiǎn)單起見(jiàn),我們?cè)趩?dòng)類中配置火邓。

package com.yshmsoft;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
    @EnableWebSecurity
    static class WebSecurityConfigure extends WebSecurityConfigurerAdapter {
        @Override
        protected void configure(HttpSecurity http) throws Exception {
             // 在/eureka/**端點(diǎn)忽略csrf驗(yàn)證
             http.csrf().ignoringAntMatchers("/eureka/**");
             // 配置使請(qǐng)求需要通過(guò)httpBasic或form驗(yàn)證
             http.authorizeRequests()
                    .anyRequest().authenticated()
                    .and()
                    .formLogin()
                    .and()
                    .httpBasic();
             super.configure(http);
        }
    }
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

3. 修改之前所有項(xiàng)目中eureka服務(wù)的url,使支持httpBasic驗(yàn)證

# eureka_server的application.yml
spring:
  application:
    name: eureka-server
  security:
    user:
      name: user
      password: 123456
logging:
  level:
    root: info
    org.springframework:
      security: debug
---
server:
  port: 8761
eureka:
  client:
    service-url:
      defaultZone: http://user:123456@peer2:8762/eureka/
  instance:
    hostname: peer1
    prefer-ip-address: true
spring:
  profiles: peer1
---
server:
  port: 8762
eureka:
  client:
    fetch-registry: false
    register-with-eureka: false
    service-url:
      defaultZone: http://user:123456@peer1:8761/eureka/
  instance:
    hostname: peer2
    prefer-ip-address: true
spring:
  profiles: peer2
# consume_server的application.yml
spring:
  application:
    name: consume-server
server:
  port: 8000
logging:
  level:
    root: info
eureka:
  client:
    service-url:
      defaultZone: http://user1:123456@peer1:8761/eureka/,http://user:123456@peer2:8762/eureka/
# product_server的application.yml
server:
  port: 8080
spring:
  security:
    user:
      name: user
      password: 123456
  datasource:
    platform: h2
    schema: classpath:schema.sql
    data: classpath:data.sql
  jpa:
    generate-ddl: false
    show-sql: true
    hibernate:
      ddl-auto: none
  application:
    name: product-server
logging:
  level:
    root: info
    org.hibernate: info
eureka:
  client:
    service-url:
      defaultZone: http://user:123456@peer1:8761/eureka/,http://user:123456@peer2:8762/eureka/
  1. 啟動(dòng)服務(wù)測(cè)試服務(wù)是否正常運(yùn)行
    項(xiàng)目啟動(dòng)成功

    需要登錄驗(yàn)證

    登錄之后服務(wù)注冊(cè)正常

    服務(wù)正常訪問(wèn)

    配置httpBasic驗(yàn)證完成

二丹弱、 spring cloud中Eureka instance配置參數(shù)介紹

  1. appname 設(shè)置appname 默認(rèn)值為null 如果設(shè)置spring.application.name則為 spring.application.name
  2. virtualHostName 設(shè)置虛擬主機(jī)名 默認(rèn)值為unknown如果設(shè)置spring.application.name則為 spring.application.name
  3. secureVirtualHostName 設(shè)置安全虛擬主機(jī)名 默認(rèn)值為null 如果設(shè)置spring.application.name則為 spring.application.name
eureka配置源碼
  1. instanceEnabledOnit 設(shè)置eureka實(shí)例是否在注冊(cè)到eureka server之后立刻可以提供服務(wù)德撬,一般情況下實(shí)例注冊(cè)到eureka server之后會(huì)首先執(zhí)行一些其他任務(wù)。 該值默認(rèn)為false
  2. nonSecurePort 非https下的端口號(hào) 默認(rèn)為80
  3. securePort https下的端口號(hào) 默認(rèn)為443
  4. nonSecurePortEnabled 是否啟用非https端口 默認(rèn)true
  5. securePortEnabled 是否啟用https端口 默認(rèn)為false
  6. leaseRenewalIntervalInSeconds 設(shè)置每隔多長(zhǎng)時(shí)間向eureka server發(fā)送一次心跳包躲胳,當(dāng)超過(guò)一定時(shí)間eureka server會(huì)將超時(shí)的client從服務(wù)列表中移除 默認(rèn)為30
  7. leaseExpirationDurationInSeconds 設(shè)置接收客戶端心跳包超時(shí)時(shí)間蜓洪,超過(guò)指定時(shí)間沒(méi)有心跳的客戶端將被移除,此值至少要比leaseRenewalIntervalInSeconds大才行 默認(rèn)為90
  8. instanceId 配置實(shí)例的唯一id
  9. metadataMap 自定義元數(shù)據(jù)以name/value對(duì)的形式
  10. statusPageUrlPath 查看服務(wù)信息的url 此服務(wù)依賴spring-boot-actuator 默認(rèn)值為actuatorPrefix + "/info"
  11. homePageUrlPath 服務(wù)跟路徑 默認(rèn)為 /
  12. homePageUrl 服務(wù)本路徑 默認(rèn)為null
  13. healthCheckUrlPath 服務(wù)健康狀態(tài)檢查url此服務(wù)依賴spring-boot-actuator 默認(rèn)為actuatorPrefix + "/health"
  14. healthCheckUrl 服務(wù)健康狀態(tài)檢查url 此服務(wù)依賴spring-boot-actuator 默認(rèn)為null
  15. secureHealthCheckUrl 服務(wù)健康狀態(tài)檢查url 此服務(wù)依賴spring-boot-actuator 默認(rèn)為null
  16. preferIpAddress 指優(yōu)先使用ip地址而不是os提供的hostname 默認(rèn)false

三坯苹、 spring cloud中 Eureka client配置參數(shù)介紹

  1. enabled 是否啟用此eureka client 默認(rèn)true
  2. registryFetchIntervalSeconds 間隔多久從defaultUrl同步一次服務(wù)注冊(cè)表默認(rèn)30
  3. instanceInfoReplicationIntervalSeconds 間隔多久將instance的變化同步到eureka server 默認(rèn)為30
  4. initialInstanceInfoReplicationIntervalSeconds 初始多長(zhǎng)時(shí)間將instance信息復(fù)制到eureka server 默認(rèn)為40
  5. 設(shè)置多久輪詢一次eureka server信息 默認(rèn)為5分鐘
  6. proxyHost 代理host
  7. proxyPort 代理port
  8. proxyUserName 代理username
  9. proxyPassword 代理password
  10. eurekaServerReadTimeoutSeconds 從eureka server讀取信息的超時(shí)時(shí)間 默認(rèn)為8
  11. eurekaServerConnectTimeoutSeconds 和eureka server連接超時(shí)時(shí)間默認(rèn)為5
  12. backupRegistryImpl 獲取實(shí)現(xiàn)了eureka客戶端在第一次啟動(dòng)時(shí)讀取注冊(cè)表的信息作為回退選項(xiàng)的實(shí)現(xiàn)名稱
  13. eurekaServerTotalConnections 設(shè)置從eureka client連接所有eureka server的總連接數(shù) 默認(rèn)為200
  14. eurekaServerTotalConnectionsPerHost 設(shè)置 eureka連接的所有eureka server的host 默認(rèn)為50
  15. shouldUnregisterOnShutdown 當(dāng)服務(wù)停止時(shí)是否取消注冊(cè) 默認(rèn)值為true
  16. allowRedirects 設(shè)置eureka server是否可以重定向eureka client到備份服務(wù)器或集群中
  17. eurekaServerURLContext 表示eureka注冊(cè)中心的路徑隆檀,如果配置為eureka,則為http://x.x.x.x:x/eureka/粹湃,在eureka的配置文件中加入此配置表示eureka作為客戶端向注冊(cè)中心注冊(cè)恐仑,從而構(gòu)成eureka集群。此配置只有在eureka服務(wù)器ip地址列表是在DNS中才會(huì)用到为鳄,默認(rèn)為null
  18. eurekaServerPort 獲取eureka服務(wù)器的端口裳仆,此配置只有在eureka服務(wù)器ip地址列表是在DNS中才會(huì)用到。默認(rèn)為null
  19. eurekaServerDNSName 獲取要查詢的DNS名稱來(lái)獲得eureka服務(wù)器孤钦,此配置只有在eureka服務(wù)器ip地址列表是在DNS中才會(huì)用到歧斟。默認(rèn)為null
  20. region 實(shí)例所在region 默認(rèn)為us-east-1
  21. eurekaConnectionIdleTimeoutSeconds 設(shè)置連接空閑多長(zhǎng)時(shí)間自動(dòng)關(guān)閉 默認(rèn)為30
  22. registryRefreshSingleVipAddress 設(shè)置client只對(duì)某個(gè)instance的注冊(cè)表感興趣默認(rèn)為null
  23. heartbeatExecutorThreadPoolSize 設(shè)置heartbeatExecutor的線程池大小 默認(rèn)為2
  24. heartbeatExecutorExponentialBackOffBound 設(shè)置heartbeatExecutor最大重試次數(shù) 默認(rèn)為10
  25. cacheRefreshExecutorThreadPoolSize 初始化refreshExector線程池大小 默認(rèn)為2
  26. cacheRefreshExecutorExponentialBackOffBound 設(shè)置刷新操作的最大重試次數(shù)默認(rèn)為10
  27. serviceUrl 設(shè)置availability zone的map
  28. gZipContent 設(shè)置是否支持gzip壓縮
  29. useDnsForFetchingServiceUrls eureka客戶端是否應(yīng)該使用DNS機(jī)制來(lái)獲取eureka服務(wù)器的地址列表,默認(rèn)為false
  30. registerWithEureka 設(shè)置是否注冊(cè)到eureka server 默認(rèn)為true
  31. fetchRemoteRegionsRegistry 設(shè)置是否從eureka獲取regions列表 默認(rèn)為true
  32. filterOnlyUpInstances 設(shè)置是否過(guò)濾只留下?tīng)顟B(tài)為UP的instance 默認(rèn)為true
  33. fetchRegistry 設(shè)置是否獲取注冊(cè)表 默認(rèn)為true
  34. dollarReplacement 獲取一個(gè)$符號(hào)的替身 默認(rèn)為_(kāi)-
  35. escapeCharReplacement 獲取一個(gè)的替身默認(rèn)為_

本篇介紹了如何為eureka server配置httpBasic驗(yàn)證司训。詳細(xì)列出了eureka的各項(xiàng)參數(shù)配置以及默認(rèn)值构捡。在分布式場(chǎng)景下,我們?cè)趺幢WC服務(wù)的負(fù)載均衡呢壳猜?下篇將介紹spring cloud中負(fù)載均衡的應(yīng)用勾徽。敬請(qǐng)期待

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市统扳,隨后出現(xiàn)的幾起案子喘帚,更是在濱河造成了極大的恐慌,老刑警劉巖咒钟,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吹由,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡朱嘴,警方通過(guò)查閱死者的電腦和手機(jī)倾鲫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)萍嬉,“玉大人乌昔,你說(shuō)我怎么就攤上這事∪雷罚” “怎么了磕道?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)行冰。 經(jīng)常有香客問(wèn)我溺蕉,道長(zhǎng)伶丐,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任疯特,我火速辦了婚禮哗魂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘漓雅。我一直安慰自己啡彬,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布故硅。 她就那樣靜靜地躺著庶灿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪吃衅。 梳的紋絲不亂的頭發(fā)上往踢,一...
    開(kāi)封第一講書(shū)人閱讀 49,749評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音徘层,去河邊找鬼峻呕。 笑死,一個(gè)胖子當(dāng)著我的面吹牛趣效,可吹牛的內(nèi)容都是我干的瘦癌。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼跷敬,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼讯私!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起西傀,我...
    開(kāi)封第一講書(shū)人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤斤寇,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后拥褂,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體娘锁,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年饺鹃,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了莫秆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡悔详,死狀恐怖镊屎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情伟端,我是刑警寧澤杯道,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布匪煌,位于F島的核電站责蝠,受9級(jí)特大地震影響党巾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜霜医,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一齿拂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧肴敛,春花似錦署海、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至镀梭,卻和暖如春刀森,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背报账。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工研底, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人透罢。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓榜晦,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親羽圃。 傳聞我的和親對(duì)象是個(gè)殘疾皇子乾胶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容