Wir haben eine Drupal-Anwendung, die sso verwendet, um Benutzer anzumelden.
Wir verwenden AWS Classic Load Balancer (ELB). AWS teilt uns mit, dass auf der ELB keine Sitzungspersistenz besteht.
Ich versuche herauszufinden, wie Cookies auf den klassischen Load Balancern ohne Persistenz funktionieren.
example.com DNS zeigt auf die ELB. Es gibt 2 Server im Pool Server1 und Server2
Was wir tun möchten, ist, wenn ein Benutzer seine Startseite beispielsweise auf http://example.com/user/12345/
Server 1 aufruft http://example.com/user/login/sso
, wenn er noch nicht angemeldet ist, auf die SSO-Seite umgeleitet wird , sich automatisch anmeldet und ein Cookie erhält SESS<hexnumber>
und dann zurück zu weitergeleitet wirdhttp://example.com/user/12345/
Es ist uns nicht gestattet, Sitzungsserver (Redis) hinzuzufügen. Dies ist die Garantie dafür, dass diese für beide Weiterleitungen auf Server 1 verbleiben.
Meines Wissens könnte der Benutzer bei jedem Treffer auf 'example.com' entweder auf Server 1 oder Server 2 landen.
Meine Frage:
Wenn sie das Cookie auf Server1 erhalten und dann zu Server2 umgeleitet werden, woher weiß Server2, dass diesem Benutzer auf Server1 bereits ein Cookie zugewiesen ist?
Ich scheine mich im Kreis zu denken. Bei der Arbeit an dieser Art von Setup in der Vergangenheit mit LBs ohne Sitzungspersistenz haben wir einen Redis-Server verwendet, um die Sitzungen zu halten, und jede Anforderung hat den Redis-Server nach Sitzungsinformationen durchsucht.
quelle
example.com
wenn die Benutzer ein Cookie erhalten und diese dann auf www1.example.com oder www2.example.com speichern?Wenn Sie eine Sitzungsverwaltungsdatenbank wie Elasticache Redis nicht verwenden können (Redis für Sitzungen sollte nicht mehr als 15 US-Dollar pro Monat kosten), ist die nächstbeste Option, Sticky-Sitzungen auf der ELB zu aktivieren.
https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-sticky-sessions.html
Dadurch werden Benutzer gezwungen, während der gesamten Sitzung denselben Backend-Knoten zu verwenden. Ein "Load Balancer Generated Cookie" mit einer Lebensdauer von 900 Sekunden sollte gut genug sein, aber Sie können dies optimieren.
quelle