SAML vs OIDC
SAML e OIDC são os dois protocolos de autenticação mais populares utilizados na indústria de SSO. Este artigo irá comparar SAML e OIDC em termos de sua arquitetura e casos de uso.
O que é SAML?
SAML (Language de Marcação de Asserção de Segurança) é 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 fornecedor de identidade (IdP) e um fornecedor de serviços (SP). Permite SSO (Single Sign-On) baseado na web, permitindo que os utilizadores se autentiquem uma vez para aceder a várias aplicações. 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, todas suportam SAML SSO.
Componentes SAML
- Fornecedor de identidade (IdP): A entidade que autentica utilizadores e fornece informações de identidade para fornecedores de serviços.
- Fornecedor de serviços (SP): A entidade que fornece serviços aos utilizadores e confia no fornecedor de identidade para autenticar os utilizadores.
- Asserções SAML: Documentos baseados em XML que transportam os detalhes de autenticação e autorização do utilizador. 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 as regras para a troca de asserções SAML entre o IdP e o SP.
- Bindings SAML: Define como as mensagens SAML são transportadas por diferentes protocolos de comunicação, como HTTP POST, HTTP Redirect, etc.
- Metadados SAML: Documentos baseados em XML que contêm as informações de configuração do IdP e do SP. Inclui a chave pública, endpoints e bindings suportados utilizados para estabelecer confiança entre o IdP e o SP.
- Endpoint de sign-on único: O endpoint onde o SP redireciona o utilizador para autenticar com o IdP.
- URL de serviço de consumo de asserção (ACS): O endpoint onde o IdP envia a asserção SAML após a autenticação bem-sucedida.
Como funciona o SAML?
- 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 utilizadores autentiquem-se uma vez para aceder a várias aplicações.
- Gestão centralizada de utilizadores: SAML permite que as organizações gerenciem identidades de utilizadores 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: As mensagens SAML são baseadas em XML e podem ser grandes. A entrega e análise do XML podem ser mais lentas comparado 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.
- Dependência de fornecedor: SAML é um protocolo específico de fornecedor, e mudar entre fornecedores pode ser desafiante.
O que é OIDC?
OIDC (OpenID Connect) é uma camada de identidade construída sobre o protocolo OAuth 2.0. Semelhante ao SAML, OIDC também é usado para a troca de dados de autenticação e autorização entre IdP e SP.
Comparado ao SAML, OIDC é um protocolo mais moderno e leve que está a ganhar popularidade para aplicações web e móveis modernas. OIDC usa JWT para transmitir informações de identidade, o que é mais compacto e mais fácil de trabalhar em comparação com asserções SAML baseadas em XML. É especialmente popular para aplicações voltadas para o consumidor e segurança de API.
Componentes do OIDC
- Fornecedor de identidade (IdP): A entidade que autentica utilizadores e fornece informações de identidade para fornecedores de serviços.
- Parte dependente (RP): A entidade que fornece serviços aos utilizadores e confia no fornecedor de identidade para autenticar os utilizadores. Por exemplo, aplicações web, aplicativos móveis ou APIs.
- Tokens OIDC: Tokens que transportam as informações de identidade do utilizador.
- Token de ID: Token em formato JWT que contém as informações de identidade do utilizador.
- Token de acesso: Token em formato JWT ou opaco que concede acesso a recursos protegidos.
- Token de atualização: Token usado para obter um novo token de acesso sem exigir que o utilizador se reautentique. Dá uma autorização offline de longa duração 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 a informação pública de configuração do OIDC a partir do IdP.
- Endpoint de autorização: Onde o RP envia o pedido de autenticação.
- Endpoint de token: Onde o RP solicita os tokens ao servidor de autorização.
- Endpoint de informações do utilizador: Onde o RP pode recuperar as informações de perfil do utilizador.
- Escopos: OIDC define um conjunto de escopos padrão que definem os direitos de acesso concedidos ao RP. Tais como
openid
,profile
,email
,address
, etc.
Como funciona o OIDC?
OIDC oferece múltiplos fluxos que são explicitamente desenhados 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 de cliente:
O fluxo de credenciais de cliente pode ser usado para autenticação não baseada no utilizador (máquina para máquina).
Vantagens do OIDC
- Moderno e leve: OIDC é um protocolo contemporâneo que utiliza tokens JWT baseados em JSON, que são mais compactos e fáceis de manipular em comparação com 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, OIDC é compatível com várias plataformas, dispositivos e plataformas.
- Segurança: OIDC oferece um método mais seguro para autenticação de utilizadores e proteção de API. Incorpora várias funcionalidades modernas de segurança, como introspecção de token, revogação de token, 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 em comparação com o SAML. É mais amigável para desenvolvedores e possui bibliotecas e SDKs abrangentes para várias 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 segurança.
- Complexidade: Embora OIDC seja simples para configurações básicas, devido à sua natureza flexível, pode adicionar complexidade ao implementar personalizações avançadas. Por exemplo, declarações personalizadas, e Controlo de acesso baseado em papel (RBAC), etc.
- Adoção: OIDC ainda é relativamente novo comparado ao SAML, especialmente no espaço empresarial. Alguns sistemas legados podem ainda depender do SAML para fins de SSO.
Comparação SAML vs OIDC
Aspeto | SAML | OIDC |
---|---|---|
Formato do token | Asserções SAML baseadas em XML | Tokens JWT baseados em JSON |
Caso de uso primário | SSO empresarial, integrações B2B | Aplicações voltadas para o consumidor, segurança de API |
Facilidade de uso | Complexo, requer entendimento profundo de XML | Simples, baseado em JSON, fácil de implementar |
Adoção | Amplamente adotado por empresas | Cada vez mais popular para aplicações modernas |
Segurança | Maduro mas considerado menos seguro | Moderno, e mais seguro |
Flexibilidade | Limitado, desenhado para casos de uso de SSO | Flexível, suporta vários casos de uso |
Futuro do SAML e OIDC
Ambos SAML e OIDC são amplamente utilizados para fins de autenticação e autorização.
O SAML continua a ser uma base sólida para SSO empresarial e integrações B2B. Seu suporte robusto para gestão de identidade federada e histórico comprovado garantem sua relevância contínua, particularmente 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 microsserviços fazem dele uma base sólida para arquiteturas nativas da nuvem e distribuídas. Com o aumento da autenticação sem senha, biometria, e autenticação multifator (MFA), espera-se que o OIDC se integre sem problemas com novas tecnologias, assegurando sua relevância nos próximos anos.