2017-08-25 6 views
1

In Auth0 gibt es 2 Algorithmen für die JWT-Token-Signatur: RS256 und HS256.jwt Signatur: RS256 oder HS256

RS256 ist ein asymmetrischer Algorithmus, was bedeutet, dass es zwei Schlüssel gibt: einen öffentlichen und einen privaten (geheimen). Auth0 hat den geheimen Schlüssel, der zum Erzeugen der Signatur verwendet wird, und der Verbraucher des JWT hat den öffentlichen Schlüssel, der zur Validierung der Signatur verwendet wird.

HS256 ist ein symmetrischer Algorithmus, was bedeutet, dass es nur einen geheimen Schlüssel gibt, der zwischen den beiden Parteien geteilt wird. Derselbe Schlüssel wird verwendet, um die Signatur zu generieren und zu validieren. Besondere Sorgfalt ist geboten, damit der Schlüssel vertraulich bleibt.

In ihren Dokumenten beschreiben sie die Vorteile von RS256. Könnte jemand mir die Vorteile erklären, HS256 Algorithmus zu benutzen, sehe ich sie jetzt nicht, aber ich bin ziemlich sicher, dass es einige gibt.

+1

Mögliche Duplikat [RS256 vs HS256: Was ist der Unterschied?] (Https://stackoverflow.com/questions/39239051/rs256-vs-hs256-whats-the-difference) –

+0

@Vitalii - Bitte beachten Sie meine Antwort - habe ich die Frage für dich beantwortet? Alles unklar? – arcseldon

+0

danke für die Bestätigung! – arcseldon

Antwort

2

Sie haben nach Vorteilen von HS256 gegenüber RS256 gefragt, z. wenn neue zu OAuth2/OIDC (bezogen auf wahrgenommen Bequemlichkeit)

  • wahrgenommen Bequemlichkeit
  • leicht zu verstehen und beginnen
  • Leistung (?)

nehmen Werfen wir einen kurzen Blick auf jede von diesen:

Empfundene Bequemlichkeit/zu verstehen, was zu tun ist - Es ist wahr, dass ein Clien kopiert TId und clientSecret in der Konfiguration auf der Anwendung ist sowohl einfach zu verstehen und schnell zu erreichen. Die heutigen Bibliotheken machen RS256 jedoch auch zum Einrichten einfach - die Bibliothek/das Framework bietet oft die Funktionalität zum Abrufen des öffentlichen Schlüssels und die Verifizierung mit einer ähnlichen Konfiguration wie HS256, jedoch ohne die Notwendigkeit, ein Geheimnis zu liefern. Sehen Sie sich einige Aut0-Beispiele an, die Ihre Technologieauswahl verwenden, um ein Verständnis dafür zu erhalten, wenn Sie nicht vertraut sind.

Leistung - Ja, hier hat HS256 möglicherweise eine Nische. Das Caching von öffentlichen Zertifikaten usw., die einen symmetrischen Schlüssel haben und dieses lokal bei der Anwendung verwenden, ohne dass eine Netzwerkanforderung usw. erforderlich ist, kann sich als effizienter erweisen.

Aber eigentlich sollte man sich die Frage stellen, ob diese Vorteile (Leistungsoptimierung?) Die Nachteile überwiegen - sicherlich aus der Sicht der Sicherheit.

Sehen Sie dies answer und fühlen Sie sich frei, Kommentare dort (Auth0 Community-Website) zu lassen, wenn immer noch nicht überzeugt. Auth0 hat für neue Clients standardmäßig RS256 verwendet, und seine Ressourcen-APIs sind standardmäßig auf RS256 eingestellt. Ein großer Vorteil von RS256, der die meisten Argumente für die Wahl von HS256 übertrumpft, ist einfach, dass es nicht notwendig ist, Geheimnisse mit der Client-Anwendung zu speichern (der Co-Locator) - der private Schlüssel ist nur dem Authorization Server (Auth0) bekannt usw.), und das Geheimnis kann nicht durchgesickert werden. Das allein sagt ziemlich viel, warum RS256 für die meisten Situationen die bessere Wahl ist.

Vertrauliche vs öffentliche Clients - Sie sollten HS256 nur dann in Betracht ziehen, wenn Ihr Client als Confidential Client gilt. Da vertrauliche Clients in der Lage sind, Geheimnisse aufzubewahren, können Sie ID-Tokens für sie auswählen, die auf zwei Arten signiert wurden. Für nicht vertrauliche Clients sollten Sie HS256 niemals verwenden, da der Client dazu nicht in der Lage ist das Geheimnis geheim halten.

Es gibt weitere Überlegungen, die HS256 zu einer schlechteren Wahl machen, zum Beispiel die Notwendigkeit, alle Anwendungen, die eine bestimmte Client-Konfiguration verwenden, manuell zu aktualisieren, wenn es einen Signierschlüssel-Rollover gibt.

0

In meinem Fall besteht der Vorteil eines symmetrischen Algorithmus darin, ein Token zu erstellen, das nur der Server lesen kann. Dazu ist ein symmetrischer Algorithmus der beste, weil er schnell ist und ein kleines Ergebnis liefert.

Verwandte Themen