Я пытаюсь объединить Spring Cloud Gateway с Discovery Client и Spring Security с OAuth. У меня большая часть работы работает, за исключением того, что я не могу сделать и OAuth, и Discovery Client.
Когда я использую Discovery Client, он правильно разрешает службу, скажем, /v1/whoami
отправляется в службу whoami
, запрашивая /
, когда я включаю безопасность, я получаю 404, когда он пытается запросить /oauth/authorization/google
, как должно быть /v1/oauth/authorization/google
. Чтобы исправить вышесказанное, я добавляю это
@Bean
public ForwardedHeaderTransformer forwardedHeaderTransformer() {
return new ForwardedHeaderTransformer();
}
Однако, когда Я делаю так, что он будет искать / v1 / whoami как / v1 / whoami, которого не существует.
Я пытался создать и зарегистрировать этот класс, но он также не работает
public class ForwardedHeaderTransformerForOAuthOnly extends ForwardedHeaderTransformer {
@Override
public ServerHttpRequest apply(ServerHttpRequest request) {
System.out.println(">>>> " + request.getPath().value());
if (isOauth(request)) {
System.out.println(">>>> IS OAUTH");
return super.apply(request);
}
return request;
//return super.apply(request);
}
private boolean isOauth(ServerHttpRequest request) {
return request.getPath().value().startsWith("/oauth2/authorization/") || request.getPath().value().startsWith("/login/oauth2/code/");
}
}