Ajouter un indicateur de sécurité à cookie JSESSIONID au printemps automatiquement
J'ai un serveur d'application tomcat est derrière un nginx.
SSL se termine sur la nginx.
Le web Spring-mvc de l'application est déployée sur le tomcat doit définir l'indicateur de sécurité sur le JSESSIONID.
Ce serait cool si le printemps a quelques détection automatique pour cela, donc je n'ai pas dérangé pendant le développement, parce que je n'ai pas de SSL.
Est-il un moyen de dire à ressort pour fixer le drapeau automatiquement?
- Je utiliser JavaConfig pour l'installation de l'application et de l'utilisation de Maven pour créer une image de la guerre de fichier.
J'ai vérifié ce déjà, mais cela semble d'une certaine manière laid et statique:
jeu de "sécuriser" drapeau de JSESSION id de cookie
OriginalL'auteur ST-DDT | 2016-08-31
Vous devez vous connecter pour publier un commentaire.
Lorsque vous utilisez printemps-session, par exemple, à persister votre session en reddis,
ceci est fait automatiquement. Le cookie est créé par
org.springframework.session.web.http.CookieHttpSessionStrategy
quiCookieHttpSessionStrategy#createSessionCookie
vérifie si la demande est faite via HTTPS et jeux sécurisé en conséquence:Si vous ne pas ressort de session, vous pouvez configurer la sécurité des cookies à l'aide d'un
ServletContextInitializer
.Utiliser un l'application de la propriété, pour le définir à true/false en fonction sur un profil.
application.des propriétés (en dev lors de profil 'prod' n'est pas actif):
application-prod.propriétés (uniquement lorsque le profil 'prod' est actif, remplace la valeur dans l'application.les propriétés):
lancer votre application sur le serveur de prod avec :
Sonne comme un certain effort, si vous n'avez pas travaillé avec des profils jusqu'à présent, mais vous aurez très probablement besoin d'un profil pour l'environnement de prod de toute façon, de sorte que son vraiment la peine.
En général, vous auriez votre ssl terminator set-tête de demande de
x-forwarded-proto = https
, puis votre serveur web peut utiliser pour marque la requête isSecure.réglage sécurisé.cookie vrai/faux ne semble pas être en train de faire quelque chose pour nous. Nous utilisons nginx et aws loadbalancer en face de cela, nous avons donc besoin de cette force pour être sûr, en quelque sorte. Est-il un moyen de forcer cette pour être sur?
OriginalL'auteur Stefan Isele - prefabware.com
Si vous êtes à l'aide de Spring Boot, il existe une solution simple pour elle. Il suffit de régler la propriété suivante dans votre
application.properties
:Source: Printemps docs - Annexe A. Commun des propriétés de l'application
Si vous avez certains de l'environnement avec HTTPS et certains sans elle, vous aurez besoin de le mettre à false dans les profils sans HTTPS. Sinon, le cookie de sécurité est ignoré.
OriginalL'auteur Jonask
dans votre application.yml juste ajouter
server: servlet: session: cookie: secure: true
à la place.OriginalL'auteur AYR1112013