Я использую весеннее облако для управления своими микросервисами.
По соображениям безопасности для одного конкретного микросервиса (назовите его ms_secure) я хочу использовать настраиваемый маршрут, выбирая конкретную версию микросервиса в зависимости от IP-адреса клиента.
Конфигурация моего шлюза выглядит так:
spring:
cloud:
gateway:
discovery:
locator:
enabled: true
routes:
- id: ms_secure_v1
uri: lb://ms_secure_v1
predicates:
- Path=/ms_secure/**
filters:
- RewritePath=/ms_secure/(?<segment>.*), /$\{segment}
- name: <my filter>
args:
xForwardedForHeaderName: X-Forwarded-For
hosts:
- <IP1>
- <IP2>
- id: ms_secure
uri: lb://ms_secure_v2
predicates:
- Path=/ms_secure/**
filters:
- RewritePath=/ms_secure/(?<segment>.*), /$\{segment}
- name: <my filter>
args:
xForwardedForHeaderName: X-Forwarded-For
hosts:
- <IP3>
- <IP4>
Когда при запросе / ms_secure:
- IP1 и IP2 будут перенаправлены на ms_secure_v1
- IP3 и IP4 будут перенаправлены на ms_secure_v2
Моя проблема в том, что все мои клиенты также смогут напрямую обращаться к ms_secure_v1 или ms_secure_v2, используя маршруты по умолчанию:
http: /// ms_secure_v1 / ...
http: /// ms_secure_v2 / ...
Я попытался отключить эти маршруты с помощью SetStatus GatewayFilter:
- id: setstatusstring_route
uri: lb://ms-gateway
predicates:
- Path=/ms_secure_v**
filters:
- SetStatus=403
Но этот маршрут не совпадает.
Есть ли способ отключить эти маршруты по умолчанию в Spring Gateway?
Path=/ms_secure/**
. Так что он всегда будет соответствовать первому. - person spencergibb   schedule 14.06.2019