Spring OAuth Authorization Server hinter Spring Cloud Zuul Proxy

Ich entwickle derzeit eine Anwendung, die auf einer Mikrodienstarchitektur basiert. Wir verwenden ein API-Gateway, das mit Zuul Server von Spring Cloud Netfix implementiert wurde, um die Anforderungen an unsere Micro-Services weiterzuleiten.

Um Single Sign-On für alle unsere Dienste zu realisieren, arbeite ich derzeit an einem OAuth2-Server, der mit Spring Cloud Security eingerichtet wurde. Der Server ist im Grunde nur Kopie und Vergangenheit der Implementierung in Dave Syers Repo:https: //github.com/dsyer/spring-security-angular/tree/master/oauth2/authserve

Der Hauptunterschied besteht darin, dass ich die Anforderungen über den Zuul-Proxy an meinen OAuth-Server weiterleiten möchte. Auf diese Weise muss ich meinen OAuth-Server nicht direkt freigeben und kann den Anmeldeserver dynamisch hinzufügen und entfernen.

Das Problem ist, dass ich nicht verstehen kann, wie ich dieses Setup richtig konfiguriere. Wenn ich versuche, auf eine geschützte Ressource auf dem OAuth-Server zuzugreifen, werde ich zur Anmeldeseite weitergeleitet. Das ist natürlich wie erwartet. Aber ich kann nicht herausfinden, wie der Hostname und der Port eingestellt werden, die bei der Weiterleitung verwendet werden. Ich möchte, dass der Server an einen Endpunkt auf dem Zuul-Server weiterleitet, der wieder an den OAuth-Server weitergeleitet wird. (Das Zuul API-Gateway sollte der einzige Server sein, mit dem der Client jemals kommuniziert. Alles andere wird ausgeblendet.)

Da es sich um den Host und den Port handelt, werden diese aus dem @ geleseHttpServletRequest imLoginUrlAuthenticationEntryPoint. Die Anforderung, die der Server sieht, ist jedoch die vom Zuul-Proxy gesendete Anforderung. Ich werde also an eine interne IP weitergeleitet, nicht an einen Endpunkt auf dem Proxy.

Ich habe versucht, die URL der Anmeldeseite in @ festzulegeWebSecurityConfigurerAdapter.configure(HttpSecurity) zur absoluten URL meines Zuul Proxy. Dies führte jedoch nur dazu, dass sich meine Anwendung über zu viele Weiterleitungen beschwerte. (Könnte dort eine Schleife verursacht haben.)

Was wäre der beste Weg, dies einzurichten?

Muss ich eine eigene Weiterleitungsstrategie implementieren, indem ich eine Bean überschreibe? Gibt es eine Konfigurationsoption, die mir fehlt?Ist meine Idee selbst falsch? (In seiner Antwort aufWie vermeide ich, mit Zuul auf einen anderen Host umzuleiten? Dave Syer sagt, du würdest dies normalerweise nicht vertreten, erklärt aber nicht warum.)