Grails Spring Security umleiten auf Anmeldeseite mit https

8

Ich habe eine Grails-App mit Spring Security Core, die auf einer AWS-Maschine hinter einem Load Balancer ausgeführt wird.

Der Load-Balancer entschlüsselt die SSL-Verbindungen und leitet sie an Port 8080 unserer Instanz weiter, wobei er entsprechende X-Forwarded-Proto-Header hinzufügt.

Ich möchte keinen direkten Zugriff auf eine gesicherte Seite, um mit https auf die Anmeldeseite umzuleiten.

Zum Beispiel sollte eine Anfrage Ссылка auf Ссылка

Ich habe dies in meiner config.groovy:

%Vor%

Dies führt jedoch zu einer Umleitungsschleife (HTTP-Code 302) auf der http-Anmeldeseite ( Ссылка )

Dann habe ich es einfach mit:

versucht %Vor%

, aber dies verursacht eine Umleitung (HTTP-Code 302) auf die http-Anmeldeseite ( Ссылка )

  1. Das Problem tritt nur bei der Produktionseinrichtung auf (Krieg wurde auf Tomcat hinter dem Load Balancer implementiert).
  2. Wenn ich die selbe config.groovy auf meiner loacal dev Maschine teste, kommt die Weiterleitung zu Ссылка gut.
  3. Ich habe versucht, einen anderen httpsPort für die Spring-Sicherheit anzugeben, wieder funktioniert es auf meinem lokalen Dev-Computer, aber es wird in der bereitgestellten App, die weiter auf http
  4. verweist, komplett ignoriert

Kein Glück bei ähnlichen Posts, irgendeine Idee?

    
Paull 13.12.2013, 17:39
quelle

3 Antworten

4

Ich bin gerade durch dasselbe Szenario gegangen. Habe auf den https stecken, dann die Weiterleitungen, und jetzt ist alles gut. Verwenden Sie diese Config.groovy-Einstellungen:

%Vor%

Hinweis für diejenigen, die Springsecurity 2.0 nicht verwenden, ist es "plugins" und nicht "plugin" ohne das "s".

Meine BeanStalk Load Balancer-Einstellungen sehen so aus (Ich habe ein SSL-Zertifikat installiert, ich habe es nicht angezeigt):

Stellen Sie in den EC2 Load Balancer-Einstellungen sicher, dass Ihre Listener richtig eingestellt sind:

Und schließlich stellen Sie in den EC2-Sicherheitsgruppen sicher, dass der EB Anfragen an die Ports 80 und 443 vom ELB akzeptiert:

Beachten Sie, dass ich nirgends in meinem Setup irgendetwas auf die Ports 8080 oder 8443 referenziere, obwohl ich das auf meinem localhost zum Testen verwende. Jemand, der dies liest, könnte darüber nachdenken, diese Ports zu verwenden, um die Probleme zu beheben. Meine Einrichtung erforderte das nicht.

    
spock99 18.12.2013 22:46
quelle
4

Ich hosste auch meine Grails App mit Spring Security Core 2.0-RC4 auf AWS mit https und einem Load Balancer, und dank spock99 (oben) und Ravi L von AWS, ich habe es funktioniert.

Ich habe folgendes in config.groovy gemacht:

%Vor%

HINWEIS: Die folgenden wurden in Spring Security Core 2.0-RC4 nicht benötigt - sie sind bereits in DefaultSecurityConfig.groovy

%Vor%

Ich erhielt falsche "ungesunde" Messwerte, weil das Drücken von "/" eine 302-Weiterleitung an / login / auth zurücksendet, also habe ich eine health () - Methode zu HomeController hinzugefügt (die ich "/ health" zugeordnet habe) :

%Vor%

Der Schlüssel für mich war, dass Sitzungscookies nicht korrekt behandelt wurden, während mehrere Instanzen auf dem Load Balancer ausgeführt wurden (ich habe dies erst entdeckt, als ich die Mindestinstanz auf 2 gesetzt hatte), damit sich Benutzer anmelden und eingeloggt bleiben, habe ich bei AWS Folgendes getan:

%Vor%     
TriumphST 10.12.2014 21:17
quelle
1

Ich sah mich einem ähnlichen Problem in einer ähnlichen Umgebung gegenüber, in der das Front-End auf https war und hinter dem Firewall-Grils-Server auf http war. Wenn die Zeitüberschreitung der Sitzung abgelaufen war, wurde ajax und angular $ http verwendet, um eine Umleitungsnachricht an Ссылка zu senden. Diese Umleitungsanforderung führte dazu, dass der Zugriff im Browser verweigert wurde, weil die ursprüngliche URL https war und gemischter Inhalt deaktiviert war. Ich habe SCRIPT7002 erhalten: XMLHttpRequest: Netzwerkfehler 0x80700013, konnte den Vorgang wegen Fehler 80700013 nicht abschließen. " Dieser Fehler trat nur in der Produktion und nicht in der Testumgebung auf.

Fix ist einfach, füge einfach folgendes zur Konfigurationsdatei hinzu. grails.serverURL=" Ссылка "

    
Arvind Sachdeva 19.01.2018 10:18
quelle