2017-09-16 1 views

Antwort

1

Es gibt die RSA-Sign JavaScript Library, die tut, was Sie wollen, obwohl es einige ziemlich große und langsame Crypto-Bibliotheken verwendet, die in reinem JS geschrieben sind.

Wenn Sie ein wenig arbeiten möchten, um ein einfacheres und schnelleres Ergebnis zu erhalten, verwenden Sie die Wep Crypto API, damit der Browser die Signatur für Sie überprüft. Der genaue Code hängt vom Schlüsselalgorithmus und -format ab, aber im Wesentlichen dekodiert man die base64url-kodierte Signatur am unteren Rand der JWT, dann ruft man crypto.subtle.importKey mit ["verify"] als letztes Argument auf (Übergabe des Schlüssels im JWK-Format oder was immer sonst noch möglich ist) get), und dann verwenden Sie den resultierenden Schlüssel, um crypto.subtle.verify aufzurufen. Sie müssen die (dekodiert) Token Unterschrift in ein Arraybuffer drehen, die mit erreicht werden kann:

buffer = new Uint8Array([...signature].map(c => c.charCodeAt(0))) 

Vermeiden Sie den Schlüssel über das gleiche Netz holen und kurz vor der Unterschrift zu überprüfen (wenn der Schlüssel verwiesen wird, das 'jku' oder gegeben in den 'jwk' Header-Feldern des Tokens, da die Überprüfung der Integrität innerhalb des Browsers ziemlich schwierig ist. Besser, wenn Sie es nach der manuellen Überprüfung in Ihrem Quellcode fest codieren können.

Verwandte Themen