Ich habe gerade diesen Artikel gelesen , der ein paar Jahre alt ist, aber eine clevere Methode zum Sichern Ihrer REST-APIs beschreibt. Im Wesentlichen:
- Jeder Client verfügt über ein eindeutiges öffentliches / privates Schlüsselpaar
- Nur der Client und der Server kennen den privaten Schlüssel. Es wird nie über das Kabel gesendet
- Bei jeder Anforderung verwendet der Client mehrere Eingaben (die gesamte Anforderung selbst, den aktuellen Zeitstempel und den privaten Schlüssel) und führt sie über eine HMAC-Funktion aus, um einen Hash der Anforderung zu erstellen
- Der Client sendet dann die normale Anforderung (die den öffentlichen Schlüssel enthält) und den Hash an den Server
- Der Server sucht nach dem privaten Schlüssel des Clients (basierend auf dem bereitgestellten öffentlichen Schlüssel) und führt eine Zeitstempelprüfung durch (die ich zugegebenermaßen nicht verstehe), um sicherzustellen, dass die Anforderung nicht Opfer einer Wiederholungsattacke ist
- Wenn alles in Ordnung ist, verwendet der Server den privaten Schlüssel und dieselbe HMAC-Funktion, um einen eigenen Hash der Anforderung zu generieren
- Der Server vergleicht dann beide Hashes (den vom Client gesendeten und den von ihm generierten). Wenn sie übereinstimmen, wird die Anforderung authentifiziert und kann fortgesetzt werden
Ich bin dann auf JWT gestoßen , was sich sehr ähnlich anhört. Im ersten Artikel wird JWT jedoch überhaupt nicht erwähnt, und daher frage ich mich, ob und wie JWT von der oben genannten Authentifizierungslösung abweicht.