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.
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
- Provedor de identidade (IdP): A entidade que autentica usuários e fornece informações de identidade aos provedores de serviço.
- Provedor de serviço (SP): A entidade que fornece serviços aos usuários e depende do provedor de identidade para autenticar usuários.
- 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.
- Protocolo SAML: Define o formato das mensagens e regras para a troca de asserções SAML entre o IdP e SP.
- Bindings SAML: Define como as mensagens SAML são transportadas por diferentes protocolos de comunicação como HTTP POST, HTTP Redirect, etc.
- 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.
- Endpoint de sign-on único: O endpoint onde o SP redireciona o usuário para autenticar com o IdP.
- 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?
- Fluxo de SSO iniciado pelo SP:
- 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
- Provedor de identidade (IdP): A entidade que autentica usuários e fornece informações de identidade aos provedores de serviço.
- 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.
- 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.
- 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.
- 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:
- 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.
- 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
Aspecto | SAML | OIDC |
---|---|---|
Formato do token | Asserções SAML baseadas em XML | Tokens JWT baseados em JSON |
Caso de uso primário | SSO corporativo, integrações B2B | Aplicações voltadas para o consumidor, segurança de API |
Facilidade de uso | Complexo, requer profundo entendimento de XML | Simples, baseado em JSON, fácil de implementar |
Adoção | Amplamente adotado por empresas | Crescente popularidade para apps modernos |
Segurança | Maduro mas considerado menos seguro | Moderno e mais seguro |
Flexibilidade | Limitado, projetado para casos de uso de SSO | Flexí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.