Spring Security: erfordert-channel="https" hinter SSL-Beschleuniger
Sind wir mit einem F5 BIG-IP-Gerät zum beenden von SSL-verbindungen und die Verbindung von einfachen HTTP-Applikations-server mit einer spring-Anwendung aktiviert. Außerdem konfigurierten wir die F5-Taste zum senden eines " X-Forwarded-Proto-header mit http oder https als Wert.
Nun wollen wir erzwingen von HTTPS konfigurieren eines intercept-url:
<security:intercept-url pattern="/login.action" requires-channel="https" />
Aber das funktioniert nur, wenn das Protokoll in der servlet-containter ist HTTPS, also müssen wir interpretieren die HTTP-header.
Jede Idee, wie dies zu tun?
Dank
Simon
Du musst angemeldet sein, um einen Kommentar abzugeben.
Unterklasse SecureChannelProcessor und InsecureChannelProcessor überschreiben
decide()
. Sie müssen zu kopieren und einige code, zum Beispiel für Sichere:Legen Sie dann diese ChannelProcessors auf die ChannelDecisionManagerImpl bean mit einem BeanPostProcessor.
Ich weiß, diese Frage/Antwort ist 4 Jahre alt, aber es mir helfen, finden Sie die Lösung zu meinem problem. Aber in der modernen Spring-Boot-Anwendungen, die Lösung ist einfacher. Fügen Sie einfach den folgenden Eintrag in Ihre
application.yaml
:server.tomcat.protocol_header: x-forwarded-proto
Mehr Infos hier: http://docs.spring.io/spring-boot/docs/current/reference/html/howto-security.html#howto-enable-https
/login
nur durch die Anwesenheit vonextends WebSecurityConfigurerAdapter
- und sonst nichts.Sogar einfacher, heute :
Standardmäßig aktiviert für Cloud Foundry und Heroku, aber nicht für andere wie AWS.
Dokumentation (Abschnitt 73.7) : https://docs.spring.io/spring-boot/docs/1.5.x/reference/html/howto-embedded-servlet-containers.html