반응형
인증 흐름
- 인증 요청:
- 클라이언트가 /api/** 경로로 요청을 보낼 때, 먼저 중앙 인증 서버에 대한 인증을 수행하도록 설정해야 합니다.
- 인증 성공 시 서비스 요청:
- 인증이 성공하면, 요청을 your-service-url로 전달합니다.
예시 구성
다음은 인증 서버를 통해 인증을 수행한 후, 실제 서비스로 요청을 전달하는 구성 예시입니다.
yaml
spring:
cloud:
gateway:
routes:
- id: auth_route
uri: http://your-auth-server-url # 중앙 인증 서버의 URL
predicates:
- Path=/api/** # 요청 경로 정의
filters:
- StripPrefix=1 # 필요 시 경로에서 /api 제거
- AddRequestHeader=Authorization, Bearer {token} # Bearer 토큰 추가
- SetStatus=302 # 인증 후 리다이렉션을 위해 상태 코드 설정
- id: service_route
uri: http://your-service-url # 실제 서비스의 URL
predicates:
- Path=/api/** # 인증이 완료된 후 요청 경로
filters:
- StripPrefix=1 # 필요 시 경로에서 /api 제거
설명
- 첫 번째 라우트 (auth_route):
- 클라이언트가 /api/** 경로로 요청할 때, 이 요청은 먼저 중앙 인증 서버로 전달됩니다.
- 인증이 이루어진 후, 필요한 경우 상태 코드를 설정하여 리다이렉션을 할 수 있습니다.
- 두 번째 라우트 (service_route):
- 인증이 완료된 후, 요청을 실제 서비스(your-service-url)로 전달합니다.
- 이 라우트는 인증이 완료된 후에만 활성화되어야 합니다.
인증 성공 후 리다이렉션 처리
위의 예시에서는 인증 후 리다이렉션을 위해 SetStatus=302와 같은 필터를 사용할 수 있습니다. 그러나 인증 성공 여부를 판단하기 위해서는 추가적인 로직이 필요할 수 있습니다. 예를 들어, JWT 토큰의 유효성을 검사하거나, 중앙 인증 서버로부터 인증 성공 응답을 받아야 합니다.
결론
결국, /api/** 경로의 요청이 중앙 인증 서버를 통해 인증된 후, 실제 서비스로 전달되도록 설정하는 것이 중요합니다. 이를 통해 보안성을 높이고, 인증된 사용자만 서비스에 접근할 수 있도록 할 수 있습니다.