SAML e federação
Logon único empresarial.
SAML e federação é uma aula grátis de Cyber Security Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Cyber Security Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cyber Security Academy inclui 4 aulas no total.
O que é SAML
SAML (Linguagem de Marcação de Asserções de Segurança) é um padrão baseado em XML para trocar dados de autenticação e autorização, predominante no SSO empresarial.
- Ele permite que um provedor de identidade corporativo ateste a identidade de um usuário para muitos aplicativos.
- O SAML 2.0 é anterior ao OIDC e continua profundamente enraizado na identidade B2B e da força de trabalho.
Compreender o SAML é essencial para proteger a federação empresarial, na qual uma única falha de confiança expõe todos os aplicativos conectados.
Funções de IdP e SP
A federação SAML tem duas partes principais.
- O Provedor de identidade (IdP) autentica o usuário e emite asserções (Okta, Entra ID, Ping).
- O Provedor de serviços (SP) é o aplicativo que confia no IdP e concede acesso.
A confiança é estabelecida fora de banda pela troca de metadados, incluindo certificados de assinatura e URLs de pontos de acesso.
IdP -> authenticates user, signs assertion
SP -> consumes assertion, grants access
Metadata exchange establishes trust (certs, ACS URLs)A asserção SAML
O artefato central é a asserção, um documento XML que declara que o IdP autenticou um sujeito.
- O Sujeito identifica o usuário (NameID).
- As Condições definem a janela de validade e o público pretendido.
- O AuthnStatement registra como e quando a autenticação ocorreu.
- O AttributeStatement transporta funções, e-mail e declarações de grupos.
<saml:Assertion>
<saml:Subject><saml:NameID>user@corp</saml:NameID></saml:Subject>
<saml:Conditions NotOnOrAfter="2026-06-04T10:05:00Z"
AudienceRestriction="https://sp.example"/>
<saml:AuthnStatement .../>
</saml:Assertion>Fluxo de SSO iniciado pelo SP
O padrão mais comum é o SSO iniciado pelo SP.
- O usuário acessa o SP, que gera uma
AuthnRequeste redireciona para o IdP. - O IdP autentica o usuário e envia por POST uma
Responseassinada de volta ao Serviço Consumidor de Asserções (ACS) do SP. - O SP valida a asserção e cria uma sessão local.
1. SP -> AuthnRequest -> IdP (redirect)
2. user authenticates at IdP
3. IdP -> signed SAMLResponse -> SP ACS (HTTP POST)
4. SP validates -> sessionAssinaturas XML sustentam a confiança
A segurança do SAML se baseia em assinaturas digitais XML. O IdP assina a asserção (e/ou a resposta) com sua chave privada; o SP verifica usando o certificado confiável.
- Assine a asserção em si, não apenas a resposta externa.
- Verifique a assinatura usando um certificado do IdP fixado proveniente dos metadados, não um certificado incorporado à mensagem.
A maioria dos ataques SAML tem como alvo a lógica de validação de assinaturas.
Envelopamento de assinatura XML (XSW)
O envelopamento de assinatura XML é a classe de ataque de assinatura do SAML. O invasor mantém um elemento validamente assinado, mas adiciona uma segunda asserção forjada que a lógica do aplicativo realmente lê.
- A assinatura continua sendo verificada contra o fragmento original.
- Mas a lógica de negócio processa a asserção injetada e não assinada.
Mitigação: use uma biblioteca SAML reforçada, valide se o elemento assinado é o que será consumido e rejeite documentos com várias asserções ou asserções ambíguas.
Document after XSW:
<Response>
<Assertion id="evil">attacker claims</Assertion> // read by app
<Assertion id="orig" SIGNED>real user</Assertion> // sig valid here
</Response>Restrições de público e destinatário
Uma asserção deve estar vinculada ao SP pretendido. O SAML fornece restrições explícitas.
- AudienceRestriction nomeia o ID da entidade do SP para o qual a asserção é válida.
- O destinatário em SubjectConfirmation deve corresponder à URL do ACS.
O SP deve impor essas restrições. Ignorar a verificação do público permite que uma asserção criada para um aplicativo seja repetida em outro.
Proteções contra repetição e sincronização temporal
As asserções são credenciais de curta duração e uso único. Os SPs devem impor isso.
- Respeite
NotBeforeeNotOnOrAftercom um desvio mínimo do relógio. - Acompanhe o
IDda asserção e rejeite qualquer reutilização durante a janela de validade. - Exija TLS no ponto de acesso do ACS.
Sem rastrear repetições, uma asserção capturada pode ser enviada novamente antes de expirar.
SP checks:
now in [NotBefore, NotOnOrAfter] (+- small skew)
assertion.ID not seen before -> store + reject reuseFederação e cadeias de confiança
Federação amplia o SSO entre limites organizacionais, às vezes por meio de intermediários que traduzem entre protocolos.
- Cada vínculo de confiança é um possível ponto fraco; um provedor de identidade comprometido pode se passar por qualquer usuário.
- Intermediários de identidade podem conectar SAML e OIDC, exigindo um mapeamento cuidadoso das declarações.
Aplique o princípio do menor privilégio ao mapeamento de atributos e monitore novos registros inesperados de SP.
Fraquezas comuns do SAML
Vale a pena auditar os seguintes modos recorrentes de falha do SAML:
- Assinatura não verificada ou resposta assinada, mas asserção não assinada.
- Vulnerabilidade a encapsulamento de assinatura XML.
- Ausência de verificações de público-alvo/destinatário.
- Ausência de proteção contra repetição ou janelas de validade excessivamente longas.
- Análise de Entidade Externa XML (XXE) no SP.
- Confiança no certificado incorporado à mensagem em vez de nos metadados fixados.
Disable external entities in the XML parser:
parser.setFeature(
"http://apache.org/xml/features/disallow-doctype-decl", true)SAML vs OIDC
Ambos oferecem SSO, mas diferem em sua concepção.
- SAML usa XML, vinculações de POST/redirecionamento no navegador, é comum em ambientes corporativos e conta com ferramentas maduras.
- OIDC usa JSON/JWT, é compatível com REST e mais adequado para dispositivos móveis e SPAs.
Muitas organizações usam ambos. Os responsáveis pela defesa devem conhecer as regras de validação de asserções do protocolo usado por cada aplicativo, pois a superfície de ataque é diferente.
Verificação rápida: derrotando XSW
Selecione a melhor defesa para o ataque descrito.
Recapitulação: SAML e federação
Principais conclusões:
- SAML é um SSO empresarial baseado em XML entre um provedor de identidade e um SP, usando asserções assinadas.
- A segurança depende da validação da assinatura XML correta com base em um certificado fixado.
- Proteja-se contra encapsulamento de assinatura XML, repetição e XXE.
- Sempre imponha restrições de público-alvo/destinatário e janelas de validade.
- A federação amplia a confiança, mas multiplica o raio de impacto de um provedor de identidade comprometido.
Perguntas Frequentes
A aula “SAML e federação” é grátis?
Sim — o texto completo de “SAML e federação” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Cyber Security Academy, atualize para CoddyKit PRO. O curso de Cyber Security Academy inclui 4 aulas no total.
O que vou aprender em “SAML e federação”?
Logon único empresarial. Você pratica Cyber Security Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Cyber Security Academy?
Nenhuma experiência prévia é necessária. Cyber Security Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “SAML e federação”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Cyber Security Academy?
Sim. Cada aula de Cyber Security Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.