Português (Portugal)
  • OIDC
  • SAML
  • SSO
  • autenticação
  • autorização

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.

Simeng
Simeng
Developer

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

  1. Fornecedor de identidade (IdP): A entidade que autentica utilizadores e fornece informações de identidade para fornecedores de serviços.
  2. Fornecedor de serviços (SP): A entidade que fornece serviços aos utilizadores e confia no fornecedor de identidade para autenticar os utilizadores.
  3. 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.
  4. Protocolo SAML: Define o formato das mensagens e as regras para a troca de asserções SAML entre o IdP e o 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. 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.
  7. Endpoint de sign-on único: O endpoint onde o SP redireciona o utilizador para autenticar com o IdP.
  8. 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?

  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 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

  1. Fornecedor de identidade (IdP): A entidade que autentica utilizadores e fornece informações de identidade para fornecedores de serviços.
  2. 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.
  3. 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.
  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 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.
  5. 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:

  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 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

AspetoSAMLOIDC
Formato do tokenAsserções SAML baseadas em XMLTokens JWT baseados em JSON
Caso de uso primárioSSO empresarial, integrações B2BAplicações voltadas para o consumidor, segurança de API
Facilidade de usoComplexo, requer entendimento profundo de XMLSimples, baseado em JSON, fácil de implementar
AdoçãoAmplamente adotado por empresasCada vez mais popular para aplicações modernas
SegurançaMaduro mas considerado menos seguroModerno, e mais seguro
FlexibilidadeLimitado, desenhado para casos de uso de SSOFlexí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.