MSA - User MicroService

안정후·2024년 3월 4일
1

< 글의 목적 : MSA Architecture 를 공부하던 중, 회원 로그인에 대한 기능 구현 처리 방법을 정리해보고자 글을 작성한다. 모든 과정에 대한 글을 쓰기보다 중요한 포인트 혹은 쉽게 놓칠 수 있는 부분들에 대해 정리해보고자 한다 - 해당글의 대한 출처는 인프런 강의 "Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)" 를 참고해주세요 >

< WebSecurity >

< 참고 : WebSecurity 는 HttpSecurity 상위에 있는데, 따라서 동작은 WebSecurity 가 먼저 동작한다. 하지만, 우리는 현재 여기서 http 에 대해 조건을 걸어주고 있고, 그 이유는 WebSecurity 는 아래와 같이 사용을 하는데, Spring Security Filter Chain 를 거치지 않아 인증, 인가 서비스가 필요 없는 endpoint 에 쓰인다. httpSecurity 는 인증, 인가 서비스를 거치고 antMatchers 에 있는 엔드포인트는 '인증'을 무시한다. >

@Override
public void configure(WebSecurity web) throws Exception {
    web.ignoring().antMatchers("/health", "/health/**");
}

-> 기존에 /users/ 에 대한 엔드포인트로 시작하는 모든 api 를 허용했다면, IP 를 한정하고, .addFilter 를 통해 조건을 추가하는 과정이다.

< (참고) Override vs Implements >

-> override 는 이전에 구현이 잘 되어있는 메소드를 다시 쓰는 것이고, implement 는 구현이 안되어 있는 메소드를 구현하는 것이다.

< application.yml file routes 작성 >

-> 위 사진은 yml file 에서 msa 구조로 구성되어 있는 user microservice 를 라우팅해주는 부분이다. 기존이랑 다른 점은 RewritePath 를 적어줌으로써 굳이 /user-service 를 앞에 모두 적어주지 않아도 라우팅 되게끔 설정했다.
-> (참고) : 아래 사진과 같이 spring cloud gateway 를 통해 각 micro services 프로젝트들을 따로 분리하고, yml file routes 를 통해 id 별로 서버를 분리했다.

< JWT - Json Web Token >

// JWT
implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
implementation 'io.jsonwebtoken:jjwt-impl:0.11.5'
implementation 'io.jsonwebtoken:jjwt-jackson:0.11.5'

-> build.gradle 에 jwt 에 대한 의존성 추가 + yml file 에 만료시간 도 추가 (멀티모듈 구조일 경우 해당 모듈의 gradle file 에 의존성 추가)

public String createToken(TokenPayload payload) {
    Date now = new Date();
    Date validity = new Date(now.getTime() + validityInMilliseconds);
    return Jwts.builder()
              .addClaims(payload.toMap())
              .setIssuedAt(now)
              .setExpiration(validity)
              .signWith(key, SignatureAlgorithm.HS256)
              .compact();
}

-> jwt 생성 코드

< Spring Cloud Config >

-> 후에 설정 정보를 담고 있는 application.yml file 을 외부 시스템에서 관리하기 위한 방법으로 사용해보고 블로그로 또 정리해볼 예정이다.
< 장점 > : 각 서비스를 다시 빌드하지 않고, 바로 적용 가능

(참고 : 이해를 돕기 위한 사진이고, 해당 사진의 출처는 위와 같이 인프런 강의 "Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)" 에 있습니다.^^)

실패는 없다. 성공을 위한 하나의 과정일 뿐이다. - ajh
profile
매일 한 단계 더 발전해나가는 개발자입니다.

0개의 댓글

관련 채용 정보