2017-08-17 4 views
-1

Essayer de mettre à niveau le décodage SAML en utilisant les communs apache pour utiliser la classe Java 8 intégrée. Échec lors de l'utilisation de Java.Pourquoi java.util.Base64 et org.apache.commons.ssl.Base64 ne sont pas compatibles entre eux?

Existe-t-il un moyen de faire fonctionner Java comme apache? Est-ce que quelqu'un peut expliquer pourquoi ceux-ci sont différents?

+1

Bienvenue dans Stack Overflow! Les questions qui cherchent une aide au débogage («pourquoi ce code ne fonctionne-t-il pas?») Doivent inclure le comportement souhaité, un problème ou une erreur spécifique et le code le plus court nécessaire pour le reproduire dans la question elle-même. Les questions sans énoncé de problème clair ne sont pas utiles aux autres lecteurs. Voir: Comment créer un [mcve]. Utilisez le lien "modifier" pour améliorer votre * question * - ne pas ajouter plus d'informations via des commentaires. Merci! – GhostCat

+0

Ce n'est pas une aide au débogage. C'est une différence entre les classes. Exemple de code n'est pas nécessaire. –

+0

Ensuite, montrez l'exemple d'entrée et de sortie de chacun. Cela nous aiderait à voir ce que vous voyez. Vous pouvez au moins préciser quelle implémentation d'Apache vous parlez. (Il y a un couple, et ils traitent les espaces différemment.) – erickson

Répondre

0

La différence est dans la spécification RFC chacun utilise pour décoder: RFC 4648 vs RFC 2045.

Pour utiliser 2045 avec Java de, appelez Base64.getMimeDecoder().decode(), au lieu de Base64.getDecoder().decode() (qui utilise 4648).