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.
SimengDeveloper
Pare de perder semanas com autenticação de usuários
Lance aplicativos seguros mais rapidamente com o Logto. Integre a autenticação de usuários em minutos e concentre-se no seu produto principal.
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.
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.
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.
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.
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.
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.
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.
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.
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.