Identidade federada: SAML, OAuth e OpenID Connect
Aprenda como SSO, as asserções SAML, os fluxos OAuth 2.0 e os tokens OpenID Connect permitem que usuários se autentiquem uma única vez com segurança em vários aplicativos.
Identidade federada: SAML, OAuth e OpenID Connect é uma aula grátis de Security+ Academy no CoddyKit. Esta é a aula 4 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 Security+ Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Security+ Academy inclui 4 aulas no total.
The Problema da Identidade entre Domínios
Nas empresas modernas, os funcionários precisam acessar dezenas de aplicações — aplicações em nuvem, ferramentas SaaS, portais de parceiros e sistemas internos — cada uma potencialmente mantida por organizações diferentes. Criar e gerenciar contas separadas para cada uma delas é inseguro (proliferação de credenciais) e ineficiente. A identidade federada resolve esse problema ao permitir que um Identity Provider (IdP) — uma fonte de identidade confiável e autoritativa — autentique usuários e compartilhe essa identidade autenticada com Service Providers (SPs) além das fronteiras organizacionais. Os usuários se autenticam uma vez e obtêm acesso a vários sistemas sem precisar inserir novamente suas credenciais.
Fundamentos do Single Sign-On (SSO)
O Single Sign-On (SSO) permite que os usuários se autentiquem uma vez e acessem várias aplicações durante uma sessão sem precisar se autenticar novamente. O usuário entra no Identity Provider (Active Directory corporativo, Okta, Azure AD), recebe um token de sessão ou uma asserção e apresenta esse token a cada Service Provider que acessa. O SSO melhora a segurança ao reduzir o número de senhas que os usuários precisam gerenciar (reduzindo a reutilização), permitir a aplicação centralizada de políticas de autenticação e possibilitar a revogação imediata do acesso em todas as aplicações integradas quando uma conta é desabilitada no nível do IdP.
SAML 2.0: Federação baseada em XML
SAML (Security Assertion Markup Language) 2.0 é o padrão aberto baseado em XML para a troca de dados de autenticação e autorização entre Identity Providers e Service Providers. O fluxo do SAML é o seguinte: (1) o usuário acessa um Service Provider (por exemplo, Salesforce); (2) o SP redireciona o usuário para o Identity Provider (por exemplo, Okta); (3) o usuário se autentica no IdP; (4) o IdP emite uma SAML Assertion XML assinada, contendo a identidade e os atributos do usuário; (5) a asserção é devolvida ao SP; (6) o SP valida a assinatura da asserção usando a chave pública do IdP e concede o acesso. O SAML é amplamente usado para SSO empresarial em aplicações Web.
<!-- Simplified SAML Assertion structure -->
<saml:Assertion xmlns:saml='urn:oasis:names:tc:SAML:2.0:assertion'
IssueInstant='2026-06-21T10:00:00Z'
ID='_abc123'>
<saml:Issuer>https://idp.company.com</saml:Issuer>
<saml:Subject>
<saml:NameID>alice@company.com</saml:NameID>
</saml:Subject>
<saml:Conditions NotBefore='2026-06-21T10:00:00Z'
NotOnOrAfter='2026-06-21T10:05:00Z'/>
<saml:AttributeStatement>
<saml:Attribute Name='groups'>
<saml:AttributeValue>Sales</saml:AttributeValue>
</saml:Attribute>
</saml:AttributeStatement>
<!-- Signature verifies IdP signed this assertion -->
</saml:Assertion>Funções do SAML: IdP, SP e Principal
Três partes participam de uma federação SAML. O Principal é o usuário (ou sistema) que busca acesso — ele inicia o processo de autenticação. O Identity Provider (IdP) é a fonte autoritativa da identidade que autentica o principal e emite asserções — exemplos incluem Microsoft Azure AD, Okta, Ping Identity e ADFS. O Service Provider (SP) consome a asserção e concede acesso com base nela — exemplos incluem Salesforce, Google Workspace, AWS e qualquer aplicação compatível com SAML. O SP e o IdP estabelecem confiança antecipadamente trocando metadados que contêm as URLs dos endpoints de cada um e os certificados de assinatura.
OAuth 2.0: Estrutura de Autorização
O OAuth 2.0 é uma estrutura de authorization (não um protocolo de autenticação) que permite que uma aplicação de terceiros acesse recursos em nome de um usuário sem expor as credenciais desse usuário. Um caso de uso clássico é: “Permitir que esta aplicação de edição de fotos acesse o Google Photos”. O OAuth 2.0 introduz quatro funções: o Resource Owner (usuário), o Client (aplicação de terceiros), o Authorization Server (emite tokens) e o Resource Server (hospeda o recurso protegido). O usuário autoriza o Client, que recebe um access token e o apresenta ao Resource Server — sem nunca precisar da senha real do usuário.
Fluxo do Código de Autorização do OAuth 2.0
O Authorization Code Flow é o fluxo mais seguro do OAuth 2.0 para aplicações Web. O fluxo funciona assim: (1) o Client redireciona o usuário para o Authorization Server com os escopos solicitados; (2) o User se autentica e concede consentimento no Authorization Server; (3) o Authorization Server redireciona o usuário de volta com um authorization code de curta duração; (4) o Client troca o código por um access token (e, opcionalmente, um refresh token) por meio de uma chamada de servidor para servidor com as credenciais do Client; (5) o Client usa o access token para chamar o Resource Server. A troca do código ocorre no lado do servidor, impedindo que o access token seja exposto no histórico ou nos registros do navegador.
# OAuth 2.0 Authorization Code Flow (step 3-4)
# Step 3: User is redirected back to client with auth code
# GET https://app.example.com/callback?code=SplxlOBeZQQYbYS6WxSbIA&state=xyz
# Step 4: Client exchanges code for access token (server-to-server)
curl -X POST https://auth.example.com/oauth2/token \
-d 'grant_type=authorization_code' \
-d 'code=SplxlOBeZQQYbYS6WxSbIA' \
-d 'redirect_uri=https://app.example.com/callback' \
-d 'client_id=client_abc' \
-d 'client_secret=secret_xyz'
# Response: {'access_token': 'MTQ0Nj...', 'token_type': 'Bearer', 'expires_in': 3600}OpenID Connect: Adicionando Autenticação ao OAuth
O OpenID Connect (OIDC) é uma camada de autenticação criada sobre o OAuth 2.0. O OAuth fornece apenas autorização (os tokens de acesso comprovam o que o Client pode fazer); o OIDC adiciona autenticação (um ID token que comprova quem é o usuário). O OIDC adiciona o escopo openid ao fluxo do OAuth e retorna um JWT (JSON Web Token) ID Token assinado junto com o access token. O ID token contém claims (nome, e-mail, sub [identificador do subject]) que identificam o usuário. Atualmente, o OIDC é o protocolo dominante para SSO voltado ao consumidor — os botões “Entrar com Google/Apple/Microsoft” usam OIDC.
# OIDC ID Token is a JWT with three base64url-encoded parts:
# header.payload.signature
# Decoded payload example:
# {
# 'iss': 'https://accounts.google.com',
# 'sub': '110169484474386276334',
# 'aud': 'client_id_abc123',
# 'exp': 1750000000,
# 'iat': 1749996400,
# 'email': 'alice@gmail.com',
# 'name': 'Alice Smith',
# 'email_verified': true
# }
# The signature is verified with the IdP's public key (from JWKS endpoint)JWT: Tokens na Autenticação Moderna
Os JSON Web Tokens (JWT) são um formato compacto e seguro para URLs, usado para representar claims entre partes. Um JWT tem três partes codificadas em base64url e separadas por pontos: Header (algoritmo e tipo de token), Payload (claims: iss, sub, aud, exp, iat e claims personalizados) e Signature (assinatura criptográfica que verifica a integridade do token). Os JWTs são autocontidos — o Resource Server pode verificá-los sem chamar novamente o Authorization Server, melhorando o desempenho e permitindo arquiteturas sem estado. O requisito crítico de segurança é: sempre verifique a assinatura do JWT e confira as claims exp (expiração) e aud (público-alvo).
# Decode a JWT (header and payload are just base64 encoded)
import base64, json
jwt = 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkFsaWNlIiwiZXhwIjoxNzUwMDAwMDAwfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c'
parts = jwt.split('.')
print('Header:', json.loads(base64.b64decode(parts[0] + '==')))
print('Payload:', json.loads(base64.b64decode(parts[1] + '==')))
# Signature (parts[2]) must be verified with IdP public key!SAML vs OAuth vs OIDC: Quando Usar Cada Um
Entender quando cada padrão se aplica é fundamental para o exame Security+. SAML 2.0: SSO empresarial para aplicações Web, fluxos baseados em navegador e asserções XML. É antigo, mas amplamente implantado em empresas. OAuth 2.0: autorização de APIs — concede a aplicações de terceiros acesso limitado a recursos. Não autentica usuários diretamente. OIDC: autenticação de consumidores e de empresas modernas (SSO), criada sobre o OAuth 2.0. Retorna tokens de identificação JWT que identificam o usuário. Na prática, ambientes empresariais costumam usar SAML para SSO de aplicações e OIDC para autenticação de APIs e dispositivos móveis. Ambientes modernos nativos da nuvem preferem OIDC ao SAML por seu formato JSON/JWT e melhor suporte a dispositivos móveis.
Vetores de Ataque à Federação
Os sistemas de identidade federada introduzem vetores de ataque específicos. Replay de asserções: um invasor intercepta uma asserção SAML e a reproduz para obter acesso. Isso é mitigado por durações curtas das asserções e IDs de asserção de uso único. XML signature wrapping (XSW): no SAML, os invasores às vezes conseguem manipular XML assinado para alterar claims, mantendo válida a assinatura do conteúdo original. Confusão de algoritmo JWT: se um servidor aceitar os algoritmos RS256 (assimétrico) e HS256 (simétrico), um invasor poderá forjar JWTs usando a chave pública do servidor como segredo HMAC para HS256. Valide sempre se o algoritmo do cabeçalho corresponde ao algoritmo esperado. Redirecionadores abertos: as URIs de redirecionamento do OAuth devem corresponder exatamente para impedir o roubo de tokens por meio de redirecionamentos para sites controlados pelo invasor.
Federação de Diretórios e SCIM
A federação de identidades empresariais geralmente exige a sincronização de dados de identidade dos usuários entre sistemas. O SCIM (System for Cross-domain Identity Management) é um padrão de API REST para automatizar o provisionamento e o desprovisionamento de usuários entre um Identity Provider e Service Providers conectados. Quando um novo funcionário é adicionado ao Azure AD (IdP), o SCIM cria automaticamente a conta dessa pessoa no Salesforce, Slack, GitHub e em outras aplicações compatíveis com SCIM. Quando o funcionário é desligado, o SCIM desativa todas as contas simultaneamente, encerrando o período em que contas órfãs poderiam ser exploradas. O SCIM complementa os protocolos de SSO (SAML/OIDC) ao gerenciar o ciclo de vida, algo que os protocolos de SSO não fazem.
Verificação rápida
Teste sua compreensão dos conceitos do CompTIA Security+ (SY0-701) abordados nesta lição.
Recapitulação da lição
Nesta lição, você aprendeu: o SAML 2.0 usa asserções XML para SSO empresarial baseado em navegador; o OAuth 2.0 é uma estrutura de autorização para delegar acesso a APIs; o OpenID Connect adiciona autenticação (tokens de identificação JWT) sobre o OAuth; e o SCIM automatiza o gerenciamento do ciclo de vida das identidades em sistemas federados. Com isso, concluímos o curso de Autenticação e Autorização — a seguir, exploraremos os Fundamentos de Network Security.
Aprenda Security+ Academy com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 30
- Aulas
- 120
Perguntas Frequentes
A aula “Identidade federada: SAML, OAuth e OpenID Connect” é grátis?
Sim — o texto completo de “Identidade federada: SAML, OAuth e OpenID Connect” é 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 Security+ Academy, atualize para CoddyKit PRO. O curso de Security+ Academy inclui 4 aulas no total.
O que vou aprender em “Identidade federada: SAML, OAuth e OpenID Connect”?
Aprenda como SSO, as asserções SAML, os fluxos OAuth 2.0 e os tokens OpenID Connect permitem que usuários se autentiquem uma única vez com segurança em vários aplicativos. Você pratica 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 Security+ Academy?
Nenhuma experiência prévia é necessária. 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 4 de 4.
Quanto tempo leva a aula “Identidade federada: SAML, OAuth e OpenID Connect”?
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 Security+ Academy?
Sim. Cada aula de 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.
Todas as aulas deste curso
- Políticas de senhas e autenticação multifator
- Biometria e autenticação baseada em tokens
- Modelos de autorização: RBAC, MAC e DAC
- Identidade federada: SAML, OAuth e OpenID Connect