Domanda

Come parte del tentativo di configurare SAML AuthN con un Google Search Appliance, ho bisogno di convertire la mia risposta in Base64. Per la prova di concetto, ho solo usato il debugger in IntelliJ IDEA per sostituire la stringa con una versione generata dal comando OpenSSL:

openssl base64 -in inFileName -out outFileName

Ora ho bisogno di ottenere un lavoro la versione senza il mio intervento diretto. Sto utilizzando le Apache Commons base64 codec biblioteca (v. 1.4), charset UTF-8, lineLength 64, e il codice simile a questo:

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);

Il risultato è abbastanza vicino a quello che mi serve. Se faccio una crittografia OpenSSL sulla corda poco prima biblioteca apache fa di essa la cosa (copiare signedSamlResponse prima linea 3 esegue), e quindi eseguire un diff i due risultati sono quasi identici. L'unica differenza è il secondo ultimo carattere nell'ultima riga e questa differenza è stato coerente in tutti i miei tentativi.

Versione Openssl:

dD48L0Fzc2VydGlvbj48L3NhbWxwOlJlc3BvbnNlPgo=

versione di Apache:

dD48L0Fzc2VydGlvbj48L3NhbWxwOlJlc3BvbnNlPg==

Che cosa devo fare per l'array di byte o la stringa viene da al fine di ottenere i due risultati per abbinare?

È stato utile?

Soluzione

Sembra che le estremità versione OpenSSL con un "\ n" - in modo da averli tutti rimossi sulla seconda linea, si dovrebbe aggiungere uno alla fine:)

(In sostanza, l'array di byte da OpenSSL ha un 0x0A extra alla fine,. La versione di Apache che hai dato non lo fa)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top