Skip to content

Netscaler AAA Cookies killen

by Natanael Mignon on Juni 15th, 2011

Authenticate, Authorize, Audit. Nach dem Authentifizieren hat der Browser ein Cookie bekommen, mit dem er sich fortan ausweist und mit dem weitere Requests durchgelassen werden, solange das Session Timeout nicht erreicht oder der Browser geschlossen wurde (Session Cookie, d.h. gültig bis zum Schließen der Browser Session – das sind ALLE Fenster eines Browsers).

Will man nun eine AAA Session gezielt beenden, etwa durch einen „Logout“ Button in der Anwendung, so müsste ja eigentlich einfach nur das Session Cookie gelöscht werden. Wie aber löscht man ein Cookie? Gar nicht, das tut der Browser, wenn es nicht mehr gültig ist (invalid). Wie also macht man ein Cookie ungültig? Indem man den Browser schließt – schließlich ist es ja ein Session Cookie. Es ist aber oftmals unzumutbar, dem Anwender zu sagen „um dich abzumelden, schließe einfach alle deine Browser Fenster“.

Lösungsansatz 1: Javascript auf einer Logout-Seite, das mittels document.cookie das Cookie manipuliert, genauer gesagt sein Ablaufdatum in die Vergangenheit setzt.

Problem 1: Abhängigkeit von einem Webserver, auf dem diese Logout Seite liegt, evtl. Probleme beim Zugriff auf das Cookie (Seite muss innerhalb der Authentication Domain liegen und die Authentication Domain muss beim Manipulieren des Cookies angegeben werden). Ist aber passend zum Invalidieren von Session Cookies der Anwendung, was man ja im selben Schritt vielleicht auch machen möchte – jeder killt seine Cookies selbst, siehe Ansatz 2.

Lösungsansatz 2: An den VServer des Netscalers wird eine Rewrite (Response) Policy gebunden, die auf eine passende Bedingung matcht, z.B. den Aufruf einer bestimmten Seite (ausgelöst durch den Klick auf „Logout“). Die dadurch ausgelöste Action ist vom Typ INSERT_HTTP_HEADER und setzt einen Header namens „Set-Cookie“ mit dem Inhalt:

„NSC_TMAA=nothing;expires=Thursday, 1 Jan 1970 00:00:00 GMT;path=/;domain=Authdomain.aus.dem.AAA.VServer“

Da die Policy am selben VServer hängt, ist der Zugriff auf die Cookie Domain sichergestellt. Die Bedingungen bleiben die gleichen – so kümmert sich der Netscaler aber selbst um das von ihm gesetzte Cookie. Das existiert nämlich bereits mit genau diesen Parametern in dieser Domain, nur ohne Ablaufdatum. Durch das Set-Cookie wird dieses überschrieben, damit ist das Cookie ungültig und wird vom Browser verworfen. Die in dieser Response ausgelieferte Seite wird noch dargestellt, der nächste Request aber wird wieder auf den AAA Server umgeleitet.

Kudos an die Kollegen der Hellmann Worldwide Logistics für die Zusammenarbeit! 😉

No comments yet

Leave a Reply

You must be logged in to post a comment.