Spring Cloud 는 어떻게 마이크로 서비스 내 안전 을 보장 합 니까?

프로필
마이크로 서비스의 구조 에서 우 리 는 시스템 의 업 무 를 여러 개의 단일 한 마이크로 서비스 로 나 눌 필요 가 있다.모든 마이크로 서 비 스 는 인 터 페 이 스 를 제공 하여 다른 마이크로 서비스 호출 을 제공 합 니 다.Dubbo 에서 rmi,nio 등 을 통 해 이 루어 질 수 있 고 Spring Cloud 에서 http 를 통 해 호출 됩 니 다.
그러나 어떤 때 는 사용자 가 우리 의 게 이 트 웨 이 를 통 해 마이크로 서 비 스 를 호출 하 기 를 바 랄 뿐 사용자 가 직접 마이크로 서 비 스 를 요청 하 는 것 을 허락 하지 않 습 니 다.이때 우 리 는 Spring Security 를 통 해 안전 을 보장 할 수 있다.
2.사용 절차
2.1 인 터 페 이 스 를 제공 하 는 마이크로 서비스 항목 에 Spring Security 설정
1.먼저 pom.xml 에 Spring Security 와 관련 된 설정 을 도입 합 니 다.다음 과 같 습 니 다.

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
2 qpplication.yml 에 계 정 비밀 번 호 를 설정 합 니 다.다음 과 같 습 니 다.

security:
  basic:
    enabled: true
  user:
    name: sunbufu
    password: 123456
3.이때 인 터 페 이 스 를 방문 하면 인증 이 필요 합 니 다.
需要认证
정확 한 계 정과 비밀 번 호 를 입력 하면 방문 할 수 있 습 니 다.
2.2 마이크로 서비스 호출 항목 에 Feign 의 계 정 비밀 번 호 를 설정 합 니 다.
1.application.yml 에 계 정 비밀 번 호 를 설정 합 니 다.

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 이렇게 완성 하면 정상적으로 방문 할 수 있 습 니 다.
正常访问
실례
工程介绍
git 소스 주소:https://github.com/sunbufu/sunbufu-cloud
다음은 이 네 개의 공사 에 대한 설명 이다.
1.sunbufu-erueka:Eureka 서비스의 프로젝트
2.sunbufu-hello-face:서비스 인터페이스의 정의 프로젝트 는 마이크로 서비스 가 어떤 기능 을 실현 해 야 하 는 지,다른 마이크로 서비스 가 어떻게 호출 되 는 지,그리고 feign 의 설정 을 포함한다.
3.sunbufu-hello-impl:서비스 인터페이스의 실현 프로젝트 는 sunbufu-hello-face 정의 기능 을 실현 했다.
4.sunbufu-hello-web:서비스의 게 이 트 웨 이 프로젝트 는 주로 sunbufu-hello-face 를 호출 하기 위해 서 입 니 다.
Spring Cloud 서비스 보안 연결
Spring Cloud 는 HTTP Basic 인증 을 추가 하여 서비스 연결 의 안전성 을 높 일 수 있다.
1.보안 실행 기 가입
maven 설정 파일 에 Spring Boot 의 security 실행 기 를 추가 합 니 다.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>
이렇게 하면 서비스 연결 에 대한 안전 보 호 를 엽 니 다.시스템 은 기본적으로 사용자 이름 인'user'와 무 작위 비밀 번 호 를 만 듭 니 다.무 작위 비밀 번 호 는 서비스 가 시 작 될 때 로그 에 인쇄 됩 니 다.
2.사용자 이름 비밀번호 사용자 정의
무 작위 비밀 번 호 는 실제 적 인 의미 가 없습니다.사용자 이름과 비밀 번 호 를 고정 적 으로 연결 해 야 합 니 다.
응용 프로필 에 다음 설정 을 추가 하면 됩 니 다.

security: 
  user: 
    name: admin
    password: admin123456
이렇게 설정 한 후 이 서 비 스 를 연결 할 때 사용자 이름과 비밀 번 호 를 입력 하 라 고 요구 합 니 다.인증 에 실패 하면 401 오 류 를 되 돌려 줍 니 다.

{
    "timestamp": 1502689874556,
    "status": 401,
    "error": "Unauthorized",
    "message": "Bad credentials",
    "path": "/test/save"
}
3.안전 연결
1.등록 센터 안전 연결

username:password@ipaddress
2.Feign 설명 식 서비스 안전 연결

@FeignClient(name = "SERVICE", configuration = FeignAuthConfig.class)
public interface OrderService extends OrderAPI {
}

@Configuration
public class FeignAuthConfig {
    @Bean
    public BasicAuthRequestInterceptor basicAuthRequestInterceptor() {
        return new BasicAuthRequestInterceptor("admin","admin123456");
    }
}
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기