Feign Client REST Call을 추상화 한 Spring Cloud Netflix 라이브러리 이다. 사용방법 호출하려는 HTTP Endpoint에 대한 Interface를 생성 @FeignClient 선언 Load Balanced 지원 참조 - https://docs.spring.io/spring-cloud-openfeign/docs/current/reference/html/ Spring Cloud OpenFeign Feign is a declarative web service client. It makes writing web service clients easier. To use Feign create an interface and annotate it. It has pluggable ann..
User-Service > UserServiceApplication.java @LoadBalaned를 붙이면 Microservice의 name으로 사용할 수 있다. 그러면 url이 바꿔도 따로 바꿔줄 필요가 없다 @SpringBootApplication @EnableDiscoveryClient public class UserServiceApplication { public static void main(String[] args) { SpringApplication.run(UserServiceApplication.class, args); } @Bean public BCryptPasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } ..
| 대칭키를 활용한 DB정보 암호화 1. User-service 의 db설정과 config 설정을 수정한다 applicaton.yml의 DB설정을 주석 처리한다 # datasource: # url: jdbc:postgresql://localhost:5432/basic # username: postgres # password: wcadmin # driver-class-name: org.postgresql.Driver bootstrap.yml의 config 설정 정보 수정한다. "user-service"의 파일 정보를 불러올 수 있게 수정. spring: cloud: config: uri: http://localhost:8888 name: user-service # profiles: # active: dev..
대칭키 Symmetric Encryption (Shared) 대칭키라는 것은 Encryption에 사용하는 키와 Deryption에 사용하는 키를 같은 거를 사용하는걸 말한다. Using the same key 비대칭키 Asymmetric Encryption (RSAKeypair) 암호화하는 키와 복호화하는 키를 다르게 쓰는 걸 비대칭키 라고한다. Private and Public Key Using Java keytool
| Spring Cloud Bus 분산 시스템의 노드(Microservice)를 경량 메시지 브로커와 연결 상태 및 구성에 대한 변경 사항을 연결된 노드에게 전달(Broadcast) WHY config가 변경되면 각 마이크로서비스는 최신 값을 갖고 오기 위해 POST로 http[s]://{microservice host}/actuator/refresh를 해줘야 한다. 물론 이 작업을 자동화할 수도 있겠으나, config server가 각 마이크로서비스의 주소를 모두 관리해야 하니 비효율적입니다. Spring cloud bus는 동적으로 config 변경을 적용하기 위한 MQ(Message Queue) Handler 이다. HOW MQ(Message Queue)에 Publisher(=config serve..
Spring Security 프레임워크와 JsonWebToken 을 이용해 웹인증을 구현하는 도중, 로그인을 시도해서 서버로부터 토큰을 얻으려고 할때, 웹서버 로그에 다음과 같은 에러가 발생했습니다. javax/xml/bind/DatatypeConverter해당 문제 발생 시 pom.xml에 아래의 라이브러리를 추가해주면 된다. javax.xml.bind jaxb-api 2.1
| Spring Cloud Config 분산 시스템에서 서버, 클라이언트 구성에 필요한 설정 정보 application.yml을 외부 시스템에서 관리 하나의 중앙화 된 저장소에서 구성요소 관리 가능 각 서비스를 다시 빌드하지 않고, 바로 적응 가능 애플리케이션 배포 파이프라인을 통해 DEV-UAT-PROD 환경에 맞는 구성 정보 사용 💻 Config Server를 추가하면 아래와 같이 Dependency가 추가된다 org.springframework.cloud spring-cloud-config-server org.springframework.boot spring-boot-starter-test test 💻 ConfigServiceApplication에 @EnableConfigServer 추가 packa..
| User-Service - AuthorizationHeaderFilter 추가 ApiGatewayService에 AuthorizationHeaderFilter 추가 - 회원가입과 로그인은 Authenticate 필요가 없다 - id: user-service # user-service (GET) uri: lb://USER-SERVICE predicates: - Path=/user-service/** - Method=GET filters: - RemoveRequestHeader=Cookie - RewritePath=/user-service/(?.*), /$\{segment} - AuthorizationHeaderFilter application.yml에 toekn 설정 token: secret: user..
| User-Service에 JWT 생성 (JSON Web Token) JWT Dependency 추가 io.jsonwebtoken jjwt 0.9.1 AuthenticationFilter.java protected void successfulAuthentication(HttpServletRequest request, HttpServletResponse response, FilterChain chain, Authentication authResult) throws IOException, ServletException { log.debug( ((User)authResult.getPrincipal()).getUsername() ); String userName = ((User)authResult.getPri..
| User-Service에 인증권한 추가 (Authentication) RequestLogin.java 사용자 로그인 정보를 저장하기 위한 RequestLogin Model 클래스 import lombok.Data; import javax.validation.constraints.Email; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; @Data public class RequestLogin { @NotNull(message = "Email cannot be null") @Size(min = 2, message = "Email not be less than two characters") @Em..
| Order-service 💻 실습소스 https://github.com/yOneChu/springcloud_HomeToy/tree/master/order-service GitHub - yOneChu/springcloud_HomeToy: SpringCloud, Cloud Bus, RabbitMQ, Kafka SpringCloud, Cloud Bus, RabbitMQ, Kafka. Contribute to yOneChu/springcloud_HomeToy development by creating an account on GitHub. github.com 💻 OrderEntity package com.example.orderservice.jpa; import lombok.Data; import org.h..
| Catalog-service 💻 실습소스 https://github.com/yOneChu/springcloud_HomeToy/tree/master/catalog-service GitHub - yOneChu/springcloud_HomeToy: SpringCloud, Cloud Bus, RabbitMQ, Kafka SpringCloud, Cloud Bus, RabbitMQ, Kafka. Contribute to yOneChu/springcloud_HomeToy development by creating an account on GitHub. github.com 💻 1. API-Gateway에 설정 spring: application: name: apigateway-service cloud: gatewa..