Nous avons une application Drupal qui utilise sso pour connecter les utilisateurs.
Nous utilisons des équilibreurs de charge classiques (ELB) AWS, AWS nous dit qu'il n'y a pas de persistance de session sur l'ELB.
Ce que j'essaie de comprendre, c'est comment les cookies fonctionnent avec non persistance sur les équilibreurs de charge classiques.
example.com DNS pointe vers l'ELB. Il y a 2 serveurs dans le pool Server1 et Server2
Ce que nous voulons, c'est que si un utilisateur accède à sa page d'accueil sur http://example.com/user/12345/
disons sur le serveur 1 s'il n'est pas déjà connecté, il est redirigé vers la page sso http://example.com/user/login/sso
, se connecte automatiquement et obtient un cookie SESS<hexnumber>
, puis redirigé vershttp://example.com/user/12345/
Nous ne sommes pas autorisés à ajouter de serveur de sessions (redis), ce qui garantit qu'ils resteront sur le serveur 1 pour les deux redirections.
À ma connaissance, chaque fois que vous accédez à "example.com", l'utilisateur peut se retrouver sur le serveur 1 ou le serveur 2.
Ma question:
S'ils obtiennent le cookie sur server1 et sont ensuite redirigés vers server2, comment server2 saura-t-il qu'un cookie est déjà attribué à cet utilisateur sur server1?
Il me semble que je me pense en rond. Lorsque nous travaillions sur ce type de configuration dans le passé en utilisant des LB sans persistance de session, nous avons utilisé un serveur redis pour tenir les sessions et chaque demande regardait le serveur redis pour les informations de session.
la source
example.com
si les utilisateurs obtiennent un cookie puis les conserver sur www1.example.com ou www2.example.com?Si vous ne pouvez pas utiliser une base de données de gestion de session comme Elasticache Redis (Redis pour les sessions uniquement ne devrait pas coûter plus de 15 $ par mois), alors la prochaine meilleure option est d'activer les sessions persistantes sur l'ELB;
https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-sticky-sessions.html
Cela forcera les utilisateurs à se connecter au même nœud principal tout au long de la session. Un "cookie généré par un équilibreur de charge" avec une durée de vie de 900 secondes devrait être suffisant, mais vous pouvez le modifier.
la source