欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring Cloud 如何保證微服務(wù)內(nèi)安全

 更新時(shí)間:2021年07月16日 11:14:25   作者:sunbufu  
這篇文章主要介紹了Spring Cloud 如何保證微服務(wù)內(nèi)安全的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

一、簡(jiǎn)介

在微服務(wù)的架構(gòu)下,我們需要把系統(tǒng)的業(yè)務(wù)劃分成多個(gè)單一的微服務(wù)。每個(gè)微服務(wù)都會(huì)提供接口供其他微服務(wù)調(diào)用,在Dubbo中可以通過(guò)rmi、nio等實(shí)現(xiàn),Spring Cloud中是通過(guò)http調(diào)用的。

但有些時(shí)候,我們只希望用戶通過(guò)我們的網(wǎng)關(guān)調(diào)用微服務(wù),不允許用戶直接請(qǐng)求微服務(wù)。這時(shí)我們就可以借助Spring Security來(lái)保障安全。

二、使用步驟

2.1 在提供接口的微服務(wù)項(xiàng)目中配置Spring Security

1 首先在pom.xml引入Spring Security的相關(guān)配置,如下

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

2 在qpplication.yml中配置賬號(hào)密碼,如下

security:
  basic:
    enabled: true
  user:
    name: sunbufu
    password: 123456

3 此時(shí)訪問(wèn)接口發(fā)現(xiàn)已經(jīng)需要認(rèn)證了。

需要認(rèn)證

輸入正確的賬號(hào)和密碼后就可以訪問(wèn)了。

2.2在調(diào)用微服務(wù)項(xiàng)目中配置Feign的賬號(hào)密碼

1 在application.yml中配置賬號(hào)密碼

security:
  user:
    name: sunbufu
    password: 123456

2 添加Feign的配置文件

package com.sunbufu.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import feign.auth.BasicAuthRequestInterceptor;
@Configuration
public class FeignConfiguration {
    @Value("${security.user.name}")
    private String userName;
    @Value("${security.user.password}")
    private String passWord;
    @Bean
    public BasicAuthRequestInterceptor basicAuthRequestInterceptor(){
        return new BasicAuthRequestInterceptor(userName, passWord);
    }
}

3 這樣完成后,就可以正常的訪問(wèn)了。

正常訪問(wèn)

三、實(shí)例

工程介紹

git源碼地址:https://github.com/sunbufu/sunbufu-cloud

下面是這4個(gè)工程的說(shuō)明:

1. sunbufu-erueka:Eureka服務(wù)的工程

2. sunbufu-hello-face:服務(wù)接口的定義工程,其中包括定義微服務(wù)需要實(shí)現(xiàn)什么功能,其他微服務(wù)怎么調(diào)用,以及feign的配置

3. sunbufu-hello-impl:服務(wù)接口的實(shí)現(xiàn)工程,實(shí)現(xiàn)了sunbufu-hello-face定義的功能

4. sunbufu-hello-web:服務(wù)的網(wǎng)關(guān)工程,主要為了調(diào)用sunbufu-hello-face

Spring Cloud服務(wù)安全連接

Spring Cloud可以增加HTTP Basic認(rèn)證來(lái)增加服務(wù)連接的安全性。

1、加入security啟動(dòng)器

在maven配置文件中加入Spring Boot的security啟動(dòng)器。

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

這樣,就開(kāi)啟對(duì)服務(wù)連接的安全保護(hù),系統(tǒng)默認(rèn)為生成一個(gè)用戶名為”user”及一個(gè)隨機(jī)密碼,隨機(jī)密碼在服務(wù)啟動(dòng)的時(shí)候在日志中會(huì)打印出來(lái)。

2、自定義用戶名密碼

隨機(jī)密碼沒(méi)什么實(shí)際意義,我們需要一個(gè)固定的連接用戶名和密碼。

在應(yīng)用配置文件中加入以下配置即可。

security: 
  user: 
    name: admin
    password: admin123456

這樣配置完后在連接這個(gè)服務(wù)的時(shí)候就會(huì)要求輸入用戶名和密碼,如果認(rèn)證失敗會(huì)返回401錯(cuò)誤。

{
    "timestamp": 1502689874556,
    "status": 401,
    "error": "Unauthorized",
    "message": "Bad credentials",
    "path": "/test/save"
}

3、安全連接

1、注冊(cè)中心安全連接

username:password@ipaddress

2、Feign申明式服務(wù)安全連接

@FeignClient(name = "SERVICE", configuration = FeignAuthConfig.class)
public interface OrderService extends OrderAPI {
}
@Configuration
public class FeignAuthConfig {
    @Bean
    public BasicAuthRequestInterceptor basicAuthRequestInterceptor() {
        return new BasicAuthRequestInterceptor("admin","admin123456");
    }
}

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解spring mvc對(duì)異步請(qǐng)求的處理

    詳解spring mvc對(duì)異步請(qǐng)求的處理

    spring mvc3.2及以上版本增加了對(duì)請(qǐng)求的異步處理,是在servlet3的基礎(chǔ)上進(jìn)行封裝的,有興趣的可以了解一下。
    2017-01-01
  • Java獲取精確到秒的時(shí)間戳方法

    Java獲取精確到秒的時(shí)間戳方法

    這篇文章主要為大家詳細(xì)介紹了Java獲取精確到秒的時(shí)間戳方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • SpringCloud+MyBatis分頁(yè)處理(前后端分離)

    SpringCloud+MyBatis分頁(yè)處理(前后端分離)

    這篇文章主要為大家詳細(xì)介紹了SpringCloud+MyBatis分頁(yè)處理,前后端分離,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • Vue.Js及Java實(shí)現(xiàn)文件分片上傳代碼實(shí)例

    Vue.Js及Java實(shí)現(xiàn)文件分片上傳代碼實(shí)例

    這篇文章主要介紹了Vue.Js及Java實(shí)現(xiàn)文件分片上傳代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • jvm中指定時(shí)區(qū)信息user.timezone問(wèn)題及解決方式

    jvm中指定時(shí)區(qū)信息user.timezone問(wèn)題及解決方式

    同一份程序使用時(shí)間LocalDateTime類型,在國(guó)內(nèi)和國(guó)外部署后,返回的時(shí)間信息前端使用出問(wèn)題,這篇文章主要介紹了jvm中指定時(shí)區(qū)信息user.timezone問(wèn)題及解決方法,需要的朋友可以參考下
    2023-02-02
  • java集合框架的體系結(jié)構(gòu)詳細(xì)說(shuō)明

    java集合框架的體系結(jié)構(gòu)詳細(xì)說(shuō)明

    最近在一本J2EE的書(shū)中看到了很不錯(cuò)的對(duì)集合框架的說(shuō)明文章
    2012-11-11
  • java 橋模式(Bridge Pattern)詳解

    java 橋模式(Bridge Pattern)詳解

    這篇文章主要介紹了java 橋模式(Bridge Pattern)詳解的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • minio的下載和springboot整合minio使用方法

    minio的下載和springboot整合minio使用方法

    本文介紹了如何通過(guò)Docker拉取MinIO鏡像,并創(chuàng)建MinIO容器的過(guò)程,首先,需要在本地創(chuàng)建/data和/conf兩個(gè)目錄用于掛載MinIO的數(shù)據(jù)和配置文件,接下來(lái),通過(guò)docker?run命令啟動(dòng)容器,設(shè)置MinIO的訪問(wèn)端口、用戶名、密碼等信息,感興趣的朋友一起看看吧
    2024-09-09
  • 從一道面試題看你對(duì)java的理解程度

    從一道面試題看你對(duì)java的理解程度

    這篇文章主要給大家介紹了關(guān)于如何從一道面試題看你對(duì)java的理解程度的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起看看吧
    2018-09-09
  • Java?DirectByteBuffer堆外內(nèi)存回收詳解

    Java?DirectByteBuffer堆外內(nèi)存回收詳解

    這篇文章主要為大家詳細(xì)介紹了Java中發(fā)DirectByteBuffer堆外內(nèi)存回收,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下
    2022-10-10

最新評(píng)論