Question

Dans le cadre de la tentative de configuration SAML AuthN avec Google Search Appliance, je dois convertir ma réponse en base64. Pour preuve de concept, je viens d'utiliser le débogueur dans IntelliJ IDEA pour remplacer la chaîne avec une version générée par la commande OpenSSL:

openssl base64 -in inFileName -out outFileName

Maintenant, je dois obtenir un travail version sans mon intervention directe. J'utilise les Apache base64 codec bibliothèque (v. 1.4), charset UTF-8, lineLength 64, et l'apparence du code comme ceci:

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

Le résultat est assez proche de ce que j'ai besoin. Si je fais un chiffrement OpenSSL sur la chaîne juste avant la bibliothèque apache ne chose est qu'il (copie signedSamlResponse avant la ligne 3 exécute), puis exécutez une diff deux résultats qu'ils sont presque identiques. La seule différence est le deuxième dernier caractère dans la dernière ligne et cette différence a été dans tous mes cohérente tentatives.

OpenSSL version:

dD48L0Fzc2VydGlvbj48L3NhbWxwOlJlc3BvbnNlPgo=

Apache version:

dD48L0Fzc2VydGlvbj48L3NhbWxwOlJlc3BvbnNlPg==

Que dois-je faire pour le tableau d'octets ou la chaîne il vient afin d'obtenir les deux résultats correspondent?

Était-ce utile?

La solution

Il ressemble à la fin de la version OpenSSL avec un « \ n » - afin de les avoir enlevé tous sur votre deuxième ligne, vous devez ajouter un à la fin:)

(En gros, le tableau d'octets de OpenSSL a une 0x0a supplémentaire à la fin;. La version d'Apache que vous avez donné ne fonctionne pas)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top