Frage

Im Rahmen des Versuchs, zu konfigurieren SAML AuthN mit einer Google Search Appliance, muß ich meine Antwort in base64 konvertieren. Für Proof of Concept, ich den Debugger in IntelliJ IDEA nur verwendet, um die Zeichenfolge mit einer Version von OpenSSL-Befehl erzeugt zu ersetzen:

openssl base64 -in inFileName -out outFileName

Jetzt muß ich ohne meine direkte Intervention eine Version zum Laufen bringen. Ich verwende die Apache commons base64 Codec-Bibliothek (v. 1.4), charset UTF-8, lineLength 64 und der Code sieht wie folgt aus:

Base64 encoder = new Base64(64);
signedSamlResponse = signedSamlResponse.replaceAll("[\n\r]","");
byte[] bytes = encoder.encode(signedSamlResponse.getBytes("UTF-8"));
signedSamlResponse = new String(bytes,0,bytes.length);

Das Ergebnis ist ganz in der Nähe zu dem, was ich brauche. Wenn ich eine OpenSSL-Verschlüsselung auf der Saite, bevor nur die Apache-Bibliothek macht es die Sache (Kopie signedSamlResponse vor Zeile 3 führt), und dann einen diff die beiden Ergebnisse laufen sie fast identisch sind. Der einzige Unterschied ist das zweite letzte Zeichen in der letzten Zeile und diese Differenz hat consistant gewesen über alle meine Versuche.

Openssl Version:

dD48L0Fzc2VydGlvbj48L3NhbWxwOlJlc3BvbnNlPgo=

Apache-Version:

dD48L0Fzc2VydGlvbj48L3NhbWxwOlJlc3BvbnNlPg==

Was muß ich auf den Byte-Array tun müssen, oder den String es herkommt, um die beiden Ergebnisse zu erhalten passen?

War es hilfreich?

Lösung

Es sieht aus wie die OpenSSL-Version endet mit einem „\ n“ - so sie alle auf Ihre zweite Zeile entfernt haben, sollten Sie eine am Ende hinzufügen:)

(Grundsätzlich ist die Byte-Array von OpenSSL hat eine extra 0x0a am Ende;. Die Apache-Version gegeben habe nicht)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top