У меня есть простое приложение для весенней загрузки, которое проксирует некоторый api с прокси-сервером zuul
@EnableZuulProxy
@SpringBootApplication
public class DemoClientApplication {
public static void main(String[] args) {
SpringApplication.run(DemoClientApplication.class, args);
}
}
application.yml
server:
port: 8080
zuul:
routes:
test:
path: /api/**
url: http://localhost:8081/api/
localhost: 8081 имеет базовую аутентификацию, что-то вроде
localhost:8081/j_spring_security_check?j_username=user&j_password=pass
которые возвращают мне файлы cookie с JSESSIONID, и, установив этот JSESSIONID в заголовок, я могу получить ресурс. Я не могу изменить localhost: 8081, потому что это не моя служба. Как я могу получить этот JSESSIONID и настроить zuul? Могу ли я сделать это только с помощью yml?




Я думаю, вы спрашиваете о чувствительных заголовках в параметрах конфигурации. По умолчанию заголовки Cookie, Set-Cookie, Авторизация заблокированы конфигурацией sensitiveHeaders: Cookie,Set-Cookie,Authorization. Его можно переопределить, но вы должны быть уверены, что не допускаете утечки конфиденциальной информации в куки-файлы вниз по потоку:
zuul:
routes:
users:
path: /myusers/**
sensitiveHeaders:
url: https://downstream
Но сначала вам нужно прочитать, почему они отключены в документации Spring Cloud:
You can share headers between services in the same system, but you probably do not want sensitive headers leaking downstream into external servers. You can specify a list of ignored headers as part of the route configuration. Cookies play a special role, because they have well defined semantics in browsers, and they are always to be treated as sensitive. If the consumer of your proxy is a browser, then cookies for downstream services also cause problems for the user, because they all get jumbled up together (all downstream services look like they come from the same place).