Décodeur de réponses SAML

Collez du XML, du Base64 ou du Base64 encodé dans une URL. L’outil affiche la structure et les signatures présentes sans valider les signatures XML.

Fonctionne localement dans votre navigateur
Le contenu SAML est décodé uniquement dans ce navigateur. Supprimez les noms de production, les adresses e-mail, les identifiants de session et les attributs avant de partager un rapport.
SAMLResponse ou XML d’assertionBase64, Base64 codé en URL ou XML brut
Attributs SAML
AttributValeur
Aucun attribut inspecté pour le moment.
XML décodé

Décoder la structure, puis vérifier sur le serveur

Cet inspecteur affiche les éléments XML et de signature intégrés, mais ne valide pas les signatures XML, les chaînes de confiance, la protection contre la relecture, la liaison du destinataire ou les métadonnées du fournisseur d'identité.

Comment décoder une réponse SAML et lire les champs de l’assertion

L’inspecteur accepte une SAMLResponse telle qu’elle arrive — Base64, Base64 encodé dans une URL ou le document <samlp:Response> brut — et expose les champs qu’elle contient : code de statut, émetteur, NameID, audience, destination, InResponseTo, les identifiants, la fenêtre Conditions et chaque valeur d’attribut. Charger un exemple remplit le champ avec un modèle généré dans la page et le décode.

Le décodage se fait dans le navigateur. Dans une session mesurée, aucune requête n’a quitté la page hormis la mesure d’audience du site : une réponse capturée peut donc être collée telle quelle. Elle contient malgré tout de vrais noms, adresses et identifiants de session : à retirer avant de partager un rapport.

  1. Collez une SAMLResponse (Base64 ou Base64 encodé dans une URL) ou un document <samlp:Response> complet ; Charger un exemple part d’un modèle dont la fenêtre temporelle est centrée sur la minute en cours.
  2. Cliquez sur Décoder et inspecter. Les compteurs donnent le nombre d’assertions, de signatures, d’attributs et de caractères ; le résumé liste statut, émetteur, sujet, audience, destination, les deux identifiants, InResponseTo et les deux valeurs temporelles.
  3. Lisez la liste des résultats : elle nomme une signature absente ou présente, une fenêtre Conditions expirée ou pas encore valide, une Audience ou une Destination manquante et un statut autre que Success.
  4. Parcourez le tableau des attributs pour les valeurs qu’un fournisseur de service mapperait, puis utilisez Copier le rapport ou le bouton Copier au-dessus du XML décodé.
  5. Cliquez sur Effacer avant la réponse suivante pour que le panneau précédent ne reste pas à l’écran.

Ce que l’inspecteur lit, et ce qu’il se contente de signaler

Ce qui est lu, et dans quel ordre

Le décodeur lit le premier élément Response, puis la première Assertion qu’il contient. Émetteur, StatusCode, NameID, audience, destination, InResponseTo, identifiants, Conditions et AttributeStatement viennent de ce couple. Avec deux assertions dans une réponse, le compteur indique 2, mais le résumé et le tableau des attributs ne décrivent que la première ; la fenêtre SubjectConfirmationData n’est pas interprétée.

L’entrée est normalisée avant décodage : espaces et retours à la ligne sont supprimés, les caractères URL-safe sont acceptés, le remplissage (=) manquant est rétabli et une chaîne encodée dans une URL est d’abord décodée en percent-encoding. Le XML brut est pris tel quel. Tout le reste est refusé avec un motif : entrée vide, encodage percent cassé, Base64 invalide, ou la position de l’analyseur XML comme « line 1 at column 16: Element samlp:Response prefix is unbound ».

Fenêtre temporelle et signature

La fenêtre Conditions est comparée à l’horloge du navigateur et à rien d’autre : un document dont le NotOnOrAfter est passé est marqué expiré, un NotBefore dans le futur marque l’assertion comme pas encore valide, et une fenêtre ouverte produit la ligne neutre sur l’horloge du navigateur. Cette comparaison aide à la lecture ; ce n’est pas un contrôle anti-rejeu.

Les signatures sont comptées, pas vérifiées. Zéro élément ds:Signature produit la ligne d’alerte ; un ou deux produisent la mention que leur validité cryptographique n’a pas été contrôlée. Ni certificat, ni chaîne de confiance, ni métadonnées d’IdP, ni liaison au destinataire, ni cache anti-rejeu ne sont validés ici.

Limites mesurées et confidentialité

Une valeur d’attribut de 1 Mo a été décodée en environ 0,3 seconde lors d’une mesure, et les compteurs décrivent le dernier document décodé : un décodage en échec vide le résumé, les résultats, les attributs et le XML au lieu de laisser le résultat précédent à côté de l’erreur. Copier sans résultat répond par une phrase au lieu d’un presse-papiers silencieux.

La page fonctionne hors ligne une fois chargée et l’entrée ne quitte jamais le navigateur. Traitez le rapport décodé comme la réponse d’origine : il peut contenir des noms, des adresses e-mail, des appartenances à des groupes et des identifiants de session.

Outils récents :