So einfach geht es die Signatur eines JWT mit dem NetScaler 12 zu überprüfen, also festzustellen ob dieser Token wirklich von der ausstellenden Entität stammt.
Bei einem JSON Web-Token (JWT) handelt es sich um ein JSON basiertes und nach RFC 7519 genormtes Access-Token, welches den Austausch von verifizierbaren Claims ermöglicht. Es wird üblicherweise eingesetzt um in einem System mit einem Drittanbieter die Identität eines Benutzers zwischen einem Identity-Provider und einem Service-Provider auszutauschen.
In diesem Artikel zeigt uns Thomas Zeni, wie man mit einem NetScaler 12 die Herkunft eines JSON Web Token überprüft, ob dieser wirklich von der angegebenen Entität, dem Identity-Provider, stammt.
Dazu ist es nötig das entsprechende Zertifikat vom Identity-Provider auf dem NetScaler zu installieren. Dabei gehen wir genauso vor wie bei der Installation eines CA Zertifikats. Zur Veranschaulichung benutzen wir in diesem Beispiel ein selbstsigniertes Zertifikat, welches unter dem Namen „zonos_selfsignend“ auf dem NetScaler installiert wurde.
Der JWT steht im RequestHeader unter „Authorization“ (Siehe Screenshot).
en JWT können wir mit folgender PolicyExpression aus dem RequestHeader extrahieren um das Zertifikat zu prüfen:
HTTP.REQ.HEADER("Authorization").JWT_VERIFY_CERTKEY("zonos_selfsigned")
Diese liefert uns einen Boolean-Wert zurück, also true oder false. Damit ist es ein Leichtes das Ganze per ResponderPolicy auszuwerten. Bei einem true-Wert, einer gültigen Signatur, können wir den Request zum BackEnd-Server weiterleiten. Bei einem false-Wert, einer ungültigen Signatur, zu einer AccessDenied-Seite.
JWT Encode / Decode / Verify:
https://jwt.io