# Decodificador SAML

> Cole uma resposta ou asserção SAML (bruta, base64 ou URL-encoded) e decodifique emissor, status, sujeito, condições, audiência e atributos, com verificação de assinatura e de algoritmos fracos. Protegido contra XXE.

- Tool: https://ronutz.com/pt-BR/tools/saml-decoder
- Family: Identidade e tokens

---

## O que faz

Cole uma resposta ou asserção SAML, como XML bruto, base64 ou URL-encoded, e a ferramenta a decodifica: o emissor, o status, o sujeito, as condições, a audiência e os atributos. Ela roda uma avaliação de segurança baseada em regras junto com a decodificação, e analisa o XML de um jeito protegido contra XXE. Tudo acontece no seu navegador.

## SAML em resumo

SAML, Security Assertion Markup Language, é o padrão baseado em XML por trás de boa parte do single sign-on corporativo. Depois que você se autentica, um provedor de identidade emite uma **Assertion** assinada, geralmente envolta em uma **Response**, que afirma quem você é para um provedor de serviço. As partes que a ferramenta extrai são as que decidem se aquela asserção deve ser confiável: o **Issuer** (qual IdP), o **Status** (se a autenticação teve sucesso), o **Subject** e seu NameID (quem), as **Conditions** (a janela de validade e a **AudienceRestriction** que nomeia para quem a asserção se destina) e os **Attributes** (as afirmações sobre o usuário). Como o SAML trafega codificado em base64 no binding HTTP-POST e comprimido com DEFLATE no HTTP-Redirect, a ferramenta normaliza essas codificações primeiro.

## O modelo de segurança: rejeição de XXE

A propriedade principal desta ferramenta é como ela analisa. XML não confiável é perigoso por causa de ataques de XML External Entity (XXE) e de ataques de expansão de entidades como o billion laughs, e ambos exigem que o documento declare uma DTD, por meio de um `DOCTYPE` ou de uma declaração `<!ENTITY>`, para definir suas entidades. Uma mensagem SAML legítima nunca precisa de uma DTD, então o analisador rejeita de imediato qualquer documento que contenha uma. Essa única regra derrota o XXE clássico e a expansão billion laughs por construção, em vez de tentar sanitizá-los depois.

## O que a avaliação verifica

Além de decodificar, a ferramenta avalia a mensagem em relação às orientações de segurança do SAML: se ela está assinada, se depende de algoritmos de assinatura ou de digest fracos (como o SHA-1), e se suas condições e audiência estão presentes e coerentes. Se a asserção estiver criptografada, a ferramenta detecta o `EncryptedAssertion` e o reporta, em vez de tentar descriptografá-lo. Essas verificações espelham as perguntas da orientação de SAML do OWASP, então a saída aponta para as coisas que de fato causam vulnerabilidades de SAML.

## Como usar

Cole uma resposta ou asserção SAML em qualquer uma de suas formas comuns e leia o emissor, o status, o sujeito, as condições, a audiência e os atributos decodificados, junto com a avaliação de segurança. A análise é determinística e local, e o analisador que rejeita DTD a torna segura para inspecionar mensagens não confiáveis.

## Standards and references

- [OASIS - SAML 2.0 Core (assertions and protocols)](https://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf) - Assertion / Response structure, Subject, Conditions, Status, NameID
- [OASIS - SAML 2.0 Bindings](https://docs.oasis-open.org/security/saml/v2.0/saml-bindings-2.0-os.pdf) - HTTP-POST (base64) and HTTP-Redirect (DEFLATE) message encodings
- [OASIS - SAML 2.0 Profiles (Web Browser SSO)](https://docs.oasis-open.org/security/saml/v2.0/saml-profiles-2.0-os.pdf) - Web Browser SSO profile: bearer confirmation, audience, recipient checks
- [W3C - XML Signature Syntax and Processing 1.1](https://www.w3.org/TR/xmldsig-core1/) - ds:Signature, SignatureMethod / DigestMethod / CanonicalizationMethod URIs
- [W3C - XML Encryption Syntax and Processing 1.1](https://www.w3.org/TR/xmlenc-core1/) - EncryptedAssertion / EncryptedData structure (detected, not decrypted)
- [OWASP - XML External Entity (XXE) Prevention Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/XML_External_Entity_Prevention_Cheat_Sheet.html) - why a DTD / external entity must be rejected when parsing untrusted XML
- [OWASP - SAML Security Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/SAML_Security_Cheat_Sheet.html) - signature, audience, recipient, and replay checks for SAML responses

## Related reading

- [Assinaturas SAML e XML-DSig](https://ronutz.com/pt-BR/learn/saml-signatures.md): Como uma mensagem SAML é assinada com XML Signature: o ds:Signature envelopado, os algoritmos SignatureMethod e DigestMethod, por que o SHA-1 é fraco, a diferença entre assinar a Response e assinar a Assertion, e como funcionam os ataques de signature wrapping em XML.
- [Bindings SAML e iniciação por SP vs IdP](https://ronutz.com/pt-BR/learn/saml-bindings-and-sso-initiation.md): Um fluxo SAML pode começar no serviço ou no provedor de identidade, e as mensagens podem viajar por dois bindings diferentes: um redirect HTTP com a mensagem compactada na URL, ou um formulário HTML de auto-submit que a envia por POST. Qual binding carrega qual mensagem, e onde o fluxo começa, explica muito do comportamento do SSO.
- [Dentro de uma Asserção SAML: Sujeito, Condições e Audiência](https://ronutz.com/pt-BR/learn/saml-assertions-and-conditions.md): A anatomia de uma asserção SAML: o Subject e os formatos de NameID, a SubjectConfirmation do tipo bearer e as verificações de NotOnOrAfter / Recipient / InResponseTo, a janela de validade das Conditions, a AudienceRestriction e o AuthnStatement, com a validação que um provedor de serviço deve fazer em cada uma.
- [F5 BIG-IP APM como SAML Proxy: Modos SP e IdP](https://ronutz.com/pt-BR/learn/f5-apm-saml-federation.md): O BIG-IP APM (agora BIG-IP Zero Trust Access) é um SAML proxy concreto: como reverse proxy na frente de uma aplicação ele age como provedor de serviço SAML, delegando o login a um provedor de identidade externo e então fazendo single sign-on até o backend; ele também pode agir como provedor de identidade SAML que federa SSO a SaaS. Este artigo mapeia os papéis genéricos de SAML proxy sobre os objetos SP service, IdP service e connector do APM.
- [O SAML Proxy: Inserindo uma Camada de Identidade numa Sessão](https://ronutz.com/pt-BR/learn/saml-proxy-explained.md): Um SAML proxy fica no fluxo de SSO em vez do caminho dos pacotes: ele termina a requisição do usuário, força a autenticação contra um provedor de identidade, e só então deixa a sessão passar, usando o modelo de redirecionamento por navegador do SAML. Ele pode agir como provedor de serviço para o IdP e provedor de identidade para a aplicação ao mesmo tempo (um proxy ou broker), que é como um único login federa muitos sistemas downstream. Este artigo explica os papéis, o fluxo, e por que ele é um proxy afinal.
- [SAML 2.0: Como Funciona o SSO no Navegador](https://ronutz.com/pt-BR/learn/saml-overview.md): O que é uma asserção SAML, os papéis do provedor de identidade e do provedor de serviço, o fluxo de Web Browser SSO iniciado pelo SP de ponta a ponta, e a diferença entre os bindings HTTP-POST e HTTP-Redirect que transportam as mensagens.
- [XXE e Por Que um Parser SAML Rejeita DOCTYPE](https://ronutz.com/pt-BR/learn/xxe-and-xml-security.md): Como funcionam os ataques de Entidade Externa de XML (XXE), a negação de serviço billion laughs, por que ambos dependem de uma DTD, e por que um decodificador SAML reforçado rejeita qualquer DOCTYPE ou declaração de entidade de imediato em vez de tentar interpretá-lo com segurança.
