Obecnie rozwijam aplikację opartą na architekturze mikro-usługi. Używamy bramy API zaimplementowanej za pomocą serwera Zuul Spring Cloud Netfix do kierowania żądań do naszych mikro serwisów.Wiosenny serwer autoryzacji OAuth za Spring Cloud Zuul Proxy
Aby zrealizować pojedyncze logowanie dla wszystkich naszych usług, aktualnie pracuję nad serwerem OAuth2 skonfigurowanym przy użyciu Spring Cloud Security. Serwer jest w zasadzie tylko kopią i przeszłością implementacji w Repe Dave Syer: https://github.com/dsyer/spring-security-angular/tree/master/oauth2/authserver
Główna różnica polega na tym, że chcę przekierować żądania do mojego serwera OAuth za pośrednictwem serwera proxy Zuul. W ten sposób nie będę musiał bezpośrednio ujawniać mojego serwera OAuth i mogę dynamicznie dodawać i usuwać serwer logowania.
Problem polega na tym, że nie próbuję zrozumieć, jak poprawnie skonfigurować tę konfigurację. Kiedy próbuję uzyskać dostęp do chronionego zasobu na serwerze OAuth, jestem przekierowywany na stronę logowania. To oczywiście jest zgodne z oczekiwaniami. Ale nie wiem, jak ustawić nazwę hosta i port używany podczas przesyłania dalej. To, co chcę zrobić, to serwer do przekazania do punktu końcowego na serwerze Zuul, który zostanie przesłany z powrotem do serwera OAuth. (Zuul API-Gateway powinien być jedynym serwerem, z którym klient kiedykolwiek rozmawia. Cała reszta będzie ukryta.)
Ponieważ jest to host i port są odczytywane z HttpServletRequest
w LoginUrlAuthenticationEntryPoint
. Ale żądanie, które widzi serwer, to żądanie wysłane przez serwer proxy Zuul. Tak więc jestem przekazywany do wewnętrznego adresu IP, a nie punktu końcowego na serwerze proxy.
Próbowałem ustawić adres URL strony logowania w WebSecurityConfigurerAdapter.configure(HttpSecurity)
na adres URL bezwzględny mojego serwera proxy Zuul. Ale to właśnie spowodowało, że moja aplikacja skarżyła się na zbyt wiele przekierowań. (Może spowodowało to pętlę.)
Jaki byłby najlepszy sposób, aby to ustawić?
- Czy muszę wdrażać jakąś własną strategię przekazywania poprzez zastąpienie fasoli?
- Czy istnieje opcja konfiguracji, której mi brakuje?
- Czy mój pomysł się myli? (W jego odpowiedź na How to avoid redirect to another host with Zuul? Dave Syer mówi, że normalnie nie proxy to jednak nie wyjaśnia, dlaczego.)
Więc w końcu jak postępować z tym problemem? – wmfairuz
Czy możesz dodać, jak to rozwiązałeś i zaimplementowałeś? – Sourabh
Zaakceptowałem na razie najwyższą odpowiedź. –