Ich möchte ein Java-Objekt an einen Server senden und seine Signatur über einen anderen Weg an den Server senden. Dazu muss ich es in JSON konvertieren und dann ein Signaturformular JSON
erstellen. Ich weiß, dass ich ein signiertes Token mit JOSE erstellen kann, aber es wird auch Objektdaten an das Token anhängen, und es macht Token zu lang. Außerdem ist es erforderlich, ein Objekt mehrere Male von verschiedenen Unterzeichnern zu signieren.Kryptographie - Wie signiere ich ein JSON-Objekt in Java?
Gibt es einen Standard oder ein Tool (mindestens für Java/Javascript), um sicherzustellen, dass die Konversation von JSON zu string immer im eindeutigen Format dargestellt wird?
Ist es möglich, den zweiten Teil von JWT, der JSON-Daten enthält, zu entfernen und mit einem beliebigen JSON-Ersteller zu erstellen?
Wenn nicht die Antworten ja sind, was soll ich tun?
Ich glaube, dass 'BASE64URL (UTF8 (JWS Payload))' wird nicht garantieren Einzigartigkeit gleicher Objekte . Laut [diesem Beitrag] (http://stackoverflow.com/a/4670638/1385652) gibt es mehrere Möglichkeiten, ein JSON-Objekt in String anzuzeigen und 'BASE64URL (UTF8 (JWS Payload))' einfach nicht berücksichtigt und entfernen Payload Part macht es uns unmöglich, die Signatur der Payload zu verifizieren. –
Beachten Sie, dass in dem Beitrag von der Signierung eines JSON-Objekts die Rede ist und dass der Inhalt vor dem Signieren kanonisiert werden muss. JWS führt die Kanonisierung durch, indem es das JSON-Objekt als base64url serialisiert. Zwei verschiedene Werte können nicht den gleichen base64-Wert generieren (siehe http://stackoverflow.com/questions/30429168/is-a-base64-encoded-string-unique), aber die base64-Serialisierung führt immer zum selben Ergebnis – pedrofb