반응형
Spring Cloud Gateway를 사용하여 설정하면 모든 요청은 게이트웨이를 거치게 됩니다. 게이트웨이는 클라이언트의 요청을 받아서 적절한 백엔드 서비스로 라우팅하는 역할을 합니다. 게이트웨이에서 인증이 성공하면, 요청은 원래 목표로 삼고 있던 백엔드 서비스로 전달됩니다.
게이트웨이 흐름
- 클라이언트 요청: 클라이언트가 게이트웨이로 요청을 보냅니다.
- 필터 적용: 게이트웨이에서 설정한 필터가 적용됩니다. 예를 들어, JwtAuthenticationFilter가 적용되어 JWT 토큰을 검증합니다.
- 인증 결과:
- 성공: 필터를 통과하면, 게이트웨이는 요청을 원래 목적지(백엔드 서비스)로 라우팅합니다.
- 실패: 필터에서 인증이 실패하면, 게이트웨이는 에러 응답을 반환합니다.
인증 성공 시의 요청 흐름
- 클라이언트 요청:
- 클라이언트가 게이트웨이로 /api/service 경로로 요청을 보냅니다.
- 게이트웨이 필터 적용:
- JwtAuthenticationFilter가 요청을 가로채고, JWT 토큰을 검증합니다.
- 인증이 성공하면, 필터를 통과합니다.
- 게이트웨이 라우팅:
- 게이트웨이는 application.yml 파일에 정의된 라우팅 규칙에 따라 요청을 적절한 백엔드 서비스로 라우팅합니다.
- 백엔드 서비스 처리:
- 백엔드 서비스는 게이트웨이로부터 요청을 받아서 실제 비즈니스 로직을 수행하고, 응답을 반환합니다.
예시: application.yml 설정
yaml
spring:
cloud:
gateway:
routes:
- id: service_route
uri: http://localhost:8081 # 백엔드 서비스의 주소
predicates:
- Path=/api/service/**
filters:
- name: JwtAuthenticationFilter
요청 흐름 예시
- 클라이언트: GET http://gateway-host/api/service/resource
- 게이트웨이:
- JwtAuthenticationFilter가 JWT 토큰을 검증합니다.
- 검증이 성공하면 다음 단계로 이동합니다.
- 게이트웨이 라우팅:
- http://localhost:8081/api/service/resource로 요청을 전달합니다.
- 백엔드 서비스:
- 요청을 받아서 /api/service/resource 경로에 대한 응답을 생성합니다.
- 응답을 게이트웨이로 반환합니다.
- 게이트웨이:
- 백엔드 서비스로부터 받은 응답을 클라이언트에 전달합니다.
요약
게이트웨이에서 인증이 성공하면, 요청은 게이트웨이의 라우팅 규칙에 따라 원래 목적지인 백엔드 서비스로 전달됩니다. 백엔드 서비스는 요청을 처리하고, 그 결과를 게이트웨이를 통해 클라이언트에 반환합니다. 이를 통해 게이트웨이는 중앙에서 인증, 로깅, 모니터링 등의 공통 작업을 처리하고, 백엔드 서비스는 비즈니스 로직에 집중할 수 있게 됩니다.