Zum Hauptinhalt springen

9. Distinguishing between JWS and JWE Objects (Unterscheidung zwischen JWS- und JWE-Objekten)

Es gibt mehrere Möglichkeiten zu unterscheiden, ob ein Objekt ein JWS oder JWE ist. Alle diese Methoden liefern für alle legalen Eingabewerte das gleiche Ergebnis; für fehlerhafte Eingaben können sie unterschiedliche Ergebnisse liefern.

  • Kompakte Serialisierung - Anzahl der Segmente: Wenn das Objekt die kompakte JWS-Serialisierung oder die kompakte JWE-Serialisierung verwendet, unterscheidet sich die Anzahl der base64url-codierten Segmente, die durch Punkt-Zeichen ('.') getrennt sind, zwischen beiden. JWS haben drei Segmente, die durch zwei Punkt-Zeichen ('.') getrennt sind. JWE haben fünf Segmente, die durch vier Punkt-Zeichen ('.') getrennt sind.

  • JSON-Serialisierung - Mitglieder: Wenn das Objekt die JSON-Serialisierung von JWS oder die JSON-Serialisierung von JWE verwendet, werden die verwendeten Mitglieder unterschiedlich sein. JWS haben ein "payload"-Mitglied, während JWE keins haben. JWE haben ein "ciphertext"-Mitglied, während JWS keins haben.

  • alg-Parameterwert: Der JOSE-Header für ein JWS kann vom JOSE-Header für ein JWE unterschieden werden, indem der Wert des "alg" (algorithm, Algorithmus) Header-Parameters untersucht wird. Wenn der Wert einen digitalen Signatur- oder MAC-Algorithmus darstellt oder der Wert "none" ist, ist es für ein JWS; wenn er einen Schlüsselverschlüsselungs-, Schlüsselumhüllungs-, direkten Schlüsselvereinbarungs-, Schlüsselvereinbarungs-mit-Schlüsselumhüllungs- oder direkten Verschlüsselungsalgorithmus darstellt, ist es für ein JWE. (Das Extrahieren des "alg"-Werts zur Untersuchung ist bei Verwendung der kompakten JWS-Serialisierung oder der kompakten JWE-Serialisierung unkompliziert und kann bei Verwendung der JSON-Serialisierung von JWS oder der JSON-Serialisierung von JWE schwieriger sein.)

  • Vorhandensein des enc-Mitglieds: Der JOSE-Header für ein JWS kann auch vom JOSE-Header für ein JWE unterschieden werden, indem bestimmt wird, ob ein "enc" (encryption algorithm, Verschlüsselungsalgorithmus) Mitglied existiert. Wenn das "enc"-Mitglied existiert, ist es ein JWE; andernfalls ist es ein JWS.