Português (Brasil)
  • OIDC
  • SAML
  • SSO
  • authentication
  • authorization

SAML vs OIDC

SAML e OIDC são os dois protocolos de autenticação mais populares usados na indústria de SSO. Este artigo comparará SAML e OIDC em termos de sua arquitetura e casos de uso.

Simeng
Simeng
Developer

O que é SAML?

SAML (Security Assertion Markup Language) é um padrão aberto baseado em XML para a troca de dados de autenticação e autorização entre diferentes partes, em particular, entre um provedor de identidade (IdP) e um provedor de serviço (SP). Permite SSO (Single Sign-On) baseado na web, permitindo que os usuários se autentiquem uma única vez para acessar múltiplas aplicações. O SAML é um protocolo maduro que existe há muito tempo e é amplamente adotado por empresas. Algumas das plataformas SaaS mais populares, como Salesforce, Workday, e Microsoft Azure AD, oferecem suporte ao SAML SSO.

Componentes do SAML

  1. Provedor de identidade (IdP): A entidade que autentica usuários e fornece informações de identidade aos provedores de serviço.
  2. Provedor de serviço (SP): A entidade que fornece serviços aos usuários e depende do provedor de identidade para autenticar usuários.
  3. Asserções SAML: Documentos baseados em XML que carregam os dados de autenticação e autorização do usuário. Incluem declarações de autenticação, declarações de atributos e declarações de decisão de autorização.
  4. Protocolo SAML: Define o formato das mensagens e regras para a troca de asserções SAML entre o IdP e SP.
  5. Bindings SAML: Define como as mensagens SAML são transportadas por diferentes protocolos de comunicação como HTTP POST, HTTP Redirect, etc.
  6. Metadata SAML: Documentos baseados em XML que contêm informações de configuração do IdP e SP. Inclui a chave pública, endpoints e bindings suportados que são usados para estabelecer confiança entre o IdP e SP.
  7. Endpoint de sign-on único: O endpoint onde o SP redireciona o usuário para autenticar com o IdP.
  8. URL de Serviço de Consumidor de Asserção (ACS): O endpoint onde o IdP envia a asserção SAML após a autenticação bem-sucedida.

Como o SAML funciona?

  1. Fluxo de SSO iniciado pelo SP:
  1. Fluxo de SSO iniciado pelo IdP:

Vantagens do SAML

  • Maduro e amplamente adotado: SAML é um protocolo maduro que existe há muito tempo e é amplamente adotado por empresas.
  • Padronizado: SAML é um padrão aberto mantido pela OASIS, garantindo interoperabilidade entre diferentes fornecedores.
  • SSO: SAML permite SSO baseado na web, permitindo que os usuários se autentiquem uma única vez para acessar múltiplas aplicações.
  • Gestão centralizada de usuários: SAML permite que as organizações gerenciem identidades de usuários de forma centralizada e apliquem políticas de segurança de forma consistente.

Desafios do SAML

  • Complexidade: SAML é um protocolo complexo que requer um entendimento profundo de XML e conceitos de segurança.
  • Desempenho: Mensagens SAML são baseadas em XML e podem ser grandes. A entrega e análise de XML pode ser mais lenta comparada a formatos de token como JSON Web Token (JWT).
  • Padrão desatualizado: SAML é um padrão mais antigo comparado ao OIDC e considerado menos seguro.
  • Bloqueio de fornecedor: SAML é um protocolo específico de fornecedor, e mudar entre fornecedores pode ser desafiador.

O que é OIDC?

OIDC (OpenID Connect) é uma camada de identidade construída sobre o protocolo OAuth 2.0. Similar ao SAML, o OIDC também é usado para a troca de dados de autenticação e autorização entre IdP e SP.

Comparado ao SAML, o OIDC é um protocolo mais moderno e leve que está ganhando popularidade para aplicações modernas web e móveis. O OIDC usa JWT para transmitir informações de identidade, que é mais compacto e mais fácil de trabalhar comparado às asserções SAML baseadas em XML. É especialmente popular para aplicações voltadas para o consumidor e segurança de API.

Componentes do OIDC

  1. Provedor de identidade (IdP): A entidade que autentica usuários e fornece informações de identidade aos provedores de serviço.
  2. Parte confiável (RP): A entidade que fornece serviços aos usuários e depende do provedor de identidade para autenticar usuários. Ex.: aplicações web, aplicativos móveis ou APIs.
  3. Tokens OIDC: Tokens que carregam a informação de identidade do usuário.
    • ID token: Token no formato JWT que contém as informações de identidade do usuário.
    • Access token: Token no formato JWT ou opaco que concede acesso a recursos protegidos.
    • Refresh token: Token usado para obter um novo access token sem exigir que o usuário se reautentique. Ele fornece uma autorização de longa duração offline para o RP.
  4. Endpoints OIDC: Endpoints usados para autenticação e troca de tokens. Alguns dos endpoints mais importantes são:
    • Endpoint de descoberta: Onde o RP pode recuperar as informações públicas de configuração OIDC do IdP.
    • Endpoint de autorização: Onde o RP envia a solicitação de autenticação.
    • Endpoint de token: Onde o RP solicita tokens ao servidor de autorização.
    • Endpoint de informações do usuário: Onde o RP pode recuperar as informações de perfil do usuário.
  5. Escopos: OIDC define um conjunto de escopos padrão que definem os direitos de acesso concedidos ao RP. Como openid, profile, email, address, etc.

Como o OIDC funciona?

OIDC fornece múltiplos fluxos que são explicitamente projetados para diferentes casos de uso. Aqui estão dois dos fluxos OIDC mais comuns:

  1. Fluxo de código de autorização:

O fluxo de código de autorização é o fluxo mais comum usado no OIDC para aplicações voltadas para o consumidor.

  1. Fluxo de credenciais do cliente:

O fluxo de credenciais do cliente pode ser usado para autenticação sem usuário (máquina a máquina).

Vantagens do OIDC

  • Moderno e leve: OIDC é um protocolo contemporâneo que emprega tokens JSON-baseados em JWT, que são mais compactos e mais fáceis de lidar comparados às asserções SAML baseadas em XML.
  • Aplicações voltadas para o consumidor: OIDC é particularmente popular para aplicações voltadas para o consumidor e segurança de API.
  • Interoperabilidade: Construído sobre o OAuth 2.0, o OIDC é compatível com diversas plataformas, dispositivos e plataformas.
  • Segurança: OIDC oferece um método mais seguro para autenticação de usuário e proteção de API. Incorpora várias características de segurança modernas, como introspecção de tokens, revogação de tokens, Proof Key for Code Exchange (PKCE), e suporta diferentes fluxos de autenticação adaptados a várias necessidades de segurança.
  • Facilidade de uso: OIDC é mais simples de implementar e trabalhar comparado ao SAML. É mais amigável para desenvolvedores e possui bibliotecas e SDKs abrangentes para múltiplas linguagens de programação e plataformas.

Desafios do OIDC

  • Gestão de tokens: OIDC depende de tokens para autenticação e autorização. Requer práticas adequadas de gestão de tokens para garantir a segurança.
  • Complexidade: Embora o OIDC seja simples para configurações básicas, devido à sua natureza flexível, pode adicionar complexidade ao implementar customizações avançadas. Ex.: alegações personalizadas e Controle de acesso baseado em papel (RBAC), etc.
  • Adoção: OIDC ainda é relativamente novo comparado ao SAML, especialmente no espaço corporativo. Alguns sistemas legados ainda podem depender do SAML para fins de SSO.

Comparação SAML vs OIDC

AspectoSAMLOIDC
Formato do tokenAsserções SAML baseadas em XMLTokens JWT baseados em JSON
Caso de uso primárioSSO corporativo, integrações B2BAplicações voltadas para o consumidor, segurança de API
Facilidade de usoComplexo, requer profundo entendimento de XMLSimples, baseado em JSON, fácil de implementar
AdoçãoAmplamente adotado por empresasCrescente popularidade para apps modernos
SegurançaMaduro mas considerado menos seguroModerno e mais seguro
FlexibilidadeLimitado, projetado para casos de uso de SSOFlexível, suporta vários casos de uso

Futuro do SAML e OIDC

Tanto o SAML quanto o OIDC são amplamente usados para propósitos de autenticação e autorização.

O SAML continua sendo um pilar para SSO corporativo e integrações B2B. Seu suporte robusto para gestão federada de identidade e histórico comprovado garantem sua relevância contínua, especialmente para sistemas legados e organizações de grande escala.

OIDC, por outro lado, continua a evoluir, impulsionado pela demanda por autenticação segura e escalável em aplicações modernas. Sua natureza leve e alinhamento com APIs e microservices o tornam um pilar para arquiteturas nativas de nuvem e distribuídas. Com o surgimento da autenticação passwordless, biometria, e autenticação multifatorial (MFA), OIDC é esperado para se integrar perfeitamente com tecnologias emergentes, garantindo sua relevância nos anos futuros.