Jackson ObjectMapper - Spezifiziert die Serialisierungsreihenfolge der Objekteigenschaften

Ich bin Implementierung eines RESTful web-service, wo der Benutzer hat senden einer signierten Verifizierungs-token zusammen mit der Anfrage, so dass ich sicherstellen kann, dass der Antrag nicht manipuliert wurde durch eine Mitte der Mensch. Meine aktuelle Umsetzung ist wie folgt.

Überprüfung token ist ein VerifData Objekt serialisiert in einen String und dann gehasht und verschlüsselt.

class VerifData {
    int prop1;
    int prop2;
}

In meinem Dienst, ich lege die Daten serialisiert in eine Instanz von VerifData und dann Serialisierung mit Jackson-ObjectMapper entlang und passierten die Verifizierung Motor zusammen mit dem überprüfungscode.

VerfiData verifData = new VerifData(12345, 67890);
ObjectMapper mapper = new ObjectMapper();
String verifCodeGenerated = mapper.writeValueAsString(verifData);

Aber es scheint, dass jedes mal, wenn der application-container gestartet wird, wird die Reihenfolge der Eigenschaften zugeordnet wird, in eine Zeichenfolge von ObjectMapper änderungen.

Ex: ein mal wäre es

{"prop1":12345,"prop2":67890}

und ein anderes mal wäre es

{"prop2":67890,"prop1":12345}

So hat der AUFTRAGGEBER serialisiert die VerifData Instanz wie in der ersten Zeichenfolge, es ist 50% chance, dass es fehlgeschlagen ist, obwohl es korrekt ist.

Gibt es eine Möglichkeit dies zu umgehen? Kann ich die Reihenfolge festlegen von Eigenschaften zuordnen, die von ObjectMapper (wie in aufsteigender Reihenfolge)? Oder gibt es eine andere Möglichkeit zur optimalen Durchführung dieser überprüfung Schritt. Client-und server-Implementierungen sind von mir entwickelt wurde. Ich benutze Java-Security-API für das signieren und überprüfen.

InformationsquelleAutor der Frage Lihini | 2014-12-20

Schreibe einen Kommentar