Wie um zu überprüfen, JWT von AWS Cognito in der API-backend?
Ich Baue ein system, bestehend aus einem Angular2 single-page-app und eine REST-API läuft auf ECS. Die API läuft .Net/Nancyaber das könnte sich auch ändern.
Ich möchte in Cognito zu versuchen und das ist, wie ich mir vorgestellt Authentifizierung workflow:
- SPA-Zeichen in Benutzer und erhält ein JWT
- SPA sendet JWT zu REST-API mit jeder Anfrage
- REST-API verfies Sie, dass der JWT ist authentisch
Meine Frage ist, zu Schritt 3. Wie kann mein server (oder eher: meine Staatenlose, auto-skaliert, Lastenausgleich Docker-Container) stellen Sie sicher, dass das token authentisch? Da der "server" noch nicht ausgestellt, der JWT selbst, es nicht verwenden können, sein eigenes Geheimnis (wie beschrieben in die basic-JWT Beispiel hier).
Habe ich gelesen, durch die Cognito docs und googelte viel, aber ich kann nicht finden, eine gute Leitlinie, was zu tun mit der JWT auf der server-Seite.
InformationsquelleAutor der Frage EagleBeak | 2016-10-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Stellt sich heraus, ich hatte nicht Lesen Sie die Dokumente direkt. Es erläutert hier (nach unten scrollen, um "Mit Hilfe von ID-Token und Access Token in Ihrem Web-APIs").
Den API-service herunterladen können Cognito Geheimnisse und verwenden Sie Sie, um zu überprüfen, erhielt JWT. Perfekt.
Bearbeiten
@Groady ' s Kommentar auf den Punkt: aber wie kann überprüft werden, ob die Token? Ich würde sagen, verwenden ein kampferprobter Bibliothek, wie jose4j oder nimbus (Java) für diese und nicht die Umsetzung der Prüfung von Grund auf selbst.
Hier's eine Beispiel-Implementierung für Spring Boot mit nimbus, dass mir angefangen, als ich vor kurzem musste implementieren Sie diese in java/dropwizard-service.
InformationsquelleAutor der Antwort EagleBeak
Hier ist eine Möglichkeit zum überprüfen der Signatur auf NodeJS:
InformationsquelleAutor der Antwort FacePalm
Ich hatte ein ähnliches problem, aber ohne Verwendung der API-Gateway. In meinem Fall wollte ich zum überprüfen der Signatur eines JWT token, die über die AWS-Cognito-Entwickler Authentifizierte Identität route.
Wie viele Plakate auf verschiedenen Seiten, ich hatte Mühe, piecing zusammen genau die bits, die ich überprüfen muss die Unterschrift von einem AWS-JWT token extern, d.h., der server-Seite oder über ein Skript
Ich denke, dass ich herausgefunden hatte, aus und legte eine Zusammenfassung zu überprüfen, ob eine AWS-JWT token Signatur. Es werde überprüfen, ob eine AWS-JWT/JWS-token, die entweder mit pyjwt oder PKCS1_v1_5c von Crypto.Signatur in PyCrypto
So, ja, das war python in meinem Fall, aber es ist auch machbar leicht in Knoten (npm installieren jsonwebtoken jwk-an-pem-Anfrage).
Habe ich versucht, die highlight einige Fallstricke in den Kommentaren da, wenn ich versuche, dies herauszufinden, war ich meist das richtige zu tun, aber es gab einige Nuancen wie python dict bestellen, oder das fehlen von dort, und json-Darstellung.
Hoffentlich kann es helfen, jemanden irgendwo.
InformationsquelleAutor der Antwort Dave Kierans