Последние несколько дней я действительно искал повсюду, как это сделать, и, наконец, решил признать поражение и попросить о помощи, пожалуйста !!!
Я следил за учебным пособием доктора Дэйва Сайера по Angular и Spring Security, в частности, прокси-серверу Zuul в качестве шлюза API и использованию Spring Session с Redis (https://github.com/spring-guides/tut-spring-security-and-angular-js/tree/master/double#_sso_with_oauth2_angular_js_and_spring_security_part_v )
Проблема, с которой я сталкиваюсь, заключается в том, что я вызываю службы отдыха ресурсов через шлюз из внешнего приложения со следующим заголовком:
String plainCreds = "user:password";
byte[] plainCredsBytes = plainCreds.getBytes();
byte[] base64CredsBytes = Base64.getEncoder().encode(plainCredsBytes);
String base64Creds = new String(base64CredsBytes);
HttpHeaders headers = new HttpHeaders();
headers.add("Authorization", "Basic " + base64Creds);
пройти аутентификацию, а затем маршрутизироваться zuul, а затем ресурс, чтобы иметь доступ к аутентифицированному сеансу через Redis.
Проблема в том, что сеанс, по-видимому, фиксирует Redis в шлюзе только после ответа на запрос. Итак, что происходит, когда я вызываю службу ресурсов с заголовком, я вижу успешную аутентификацию, происходящую в шлюзе и создаваемом сеансе, однако я получаю 403 в ресурсе из-за того, что сеанс не находится в Redis после его маршрутизировался через zuul.
Однако, если я получу ошибку, возьмите идентификатор сеанса, добавьте его в заголовок и повторите попытку, он работает, потому что теперь мой аутентифицированный сеанс доступен для проекта ресурсов после его маршрутизации.
Пожалуйста, может ли кто-нибудь указать мне, как я могу получать свои звонки через шлюз для аутентификации и маршрутизации в том же запросе, пожалуйста?
Спасибо, Джастин.