Überprüfung der Google OAuth JWT-Signatur

8

Ich mache meine eigene Google OAUTH-Implementierung im PHP-Projekt. Alles funktioniert einwandfrei, es sei denn, ich versuche JWT zu bestätigen, das nach der Anfrage Zugriffstoken ( Ссылка) empfangen wurde ).

Für die JWT-Decodierung verwende ich firebase / php-jwt Klasse.

Es dekodiert perfekt, aber wenn ich $verify Option ( decode() Methode 3-rd arg) einschalte bekomme ich: Signature verification failed Ausnahme ausgelöst.

Meine Vermutung ist, dass ich einen falschen Schlüssel an die Methode decode() übergebe. Es wird später für die hash_hmac() -Funktion verwendet, wenn die Signatur erzeugt wird.

Meine Frage lautet also: Welchen Schlüssel sollte ich genau für die Signaturprüfung an den Google OAuth JWT-Kontext übergeben?

    
Hast 13.07.2013, 22:15
quelle

1 Antwort

9

Von Ссылка empfehlen wir den folgenden Ansatz:

"Wir empfehlen, dass Sie die öffentlichen Schlüssel von Google aus CSSL abrufen und die Überprüfung lokal durchführen.

Da Google seine öffentlichen Schlüssel nur selten (in der Größenordnung von einmal pro Tag) ändert, können Sie sie zwischenspeichern und in den allermeisten Fällen die lokale Validierung viel effizienter durchführen als mit dem TokenInfo-Endpunkt. Dies erfordert das Abrufen und Analysieren von Zertifikaten und das Ausführen entsprechender Crypto-Aufrufe zum Überprüfen der Signatur. Glücklicherweise gibt es gut debuggte Bibliotheken, die in einer Vielzahl von Sprachen verfügbar sind. "

    
breno 15.07.2013, 01:20
quelle

Tags und Links