Português (Brasil)
  • sso
  • saml
  • oidc

Quais são as diferenças entre SAML e OIDC?

Neste artigo, fornecemos uma visão geral dos protocolos SAML e OIDC, juntamente com seus fluxos típicos de autenticação. Comparamos as diferentes diferenças, prós e contras de cada protocolo. Além disso, com base em possíveis cenários de usuário, oferecemos orientações sobre como escolher entre esses dois protocolos.

Darcy Ye
Darcy Ye
Developer

OpenID Connect (OIDC) e Security Assertion Markup Language (SAML) são protocolos de autenticação que permitem que Provedores de Identidade (IdPs) implementem autenticação de usuário e controle de acesso. Cada protocolo define seu próprio mecanismo para manter a identidade dos usuários autenticados, que é então usada para conceder ou negar acesso a aplicativos protegidos.

O que são SAML e OIDC?

IdPs mantêm bancos de dados de informações de identidade de usuários. Os Provedores de Serviço (SPs) confiam nessas informações para autenticar os usuários, às vezes permitindo que uma única autenticação seja usada em vários aplicativos (single sign-on). OIDC e SAML são padrões que definem como essas informações relacionadas à identidade do usuário fluem entre essas duas partes. Seu objetivo final é o mesmo: autenticação do usuário. No entanto, as abordagens fundamentais que eles adotam para alcançar esse objetivo diferem.

SAML

SAML 2.0, desde 2005, é a versão atual do padrão. Ele usa XML para formatar informações de identidade, solicitações e respostas. O XML é um padrão maduro para formatar documentos de uma maneira que seja compreensível tanto por humanos quanto por computadores. Para transmitir ou receber informações codificadas em XML, ele usa solicitações básicas de SOAP ou HTTP. Definido pelo protocolo SAML, o serviço que solicita informações de identidade é o Provedor de Serviço (SP).

Antes de introduzirmos o processo típico de autenticação SAML, precisamos entender os elementos nos quais a autenticação SAML se baseia. Antes que o IdP e o SP possam se reconhecer e concluir o processo de autenticação, eles precisam "trocar" as informações necessárias, geralmente realizadas por meio de metadados formatados em XML. As informações trocadas incluem:

  • Chaves públicas, com o IdP e o SP gerando seus próprios pares de chaves públicas e privadas e trocando-as para assinar ou criptografar comunicações. Com os avanços na segurança da comunicação em rede, a maioria dos cenários agora apenas requer a assinatura de solicitações, omitindo a etapa de criptografia.
  • Endpoints, usados para o SP enviar solicitações de autenticação SAML para o IdP e para o SP receber asserções SAML em resposta a solicitações de autenticação do IdP.
  • Formatos de atributos XML suportados, usados para o IdP transmitir as informações necessárias do usuário para o SP após concluir a autenticação.

Uma vez que o IdP e o SP estão cientes das informações mencionadas, eles podem prosseguir com o processo de autorização (um fluxo típico de autenticação iniciado pelo SP):

OIDC

OIDC é um protocolo contemporâneo que aprimora o framework OAuth 2.0. Ele utiliza JSON-based Web Tokens (JWT) para construir cargas de dados. Os JWTs, uma norma estabelecida na indústria, estabelecem diretrizes para a troca e representação segura de declarações entre entidades. Essas declarações, essencialmente dados de usuários criptografados, são cruciais para a verificação e gestão de identidade. O OIDC utiliza principalmente o HTTPS onipresente para transmissão de dados.

Como é amplamente reconhecido, o protocolo OIDC suporta uma variedade de diferentes fluxos, incluindo o fluxo de código de autorização, fluxo implícito e fluxo híbrido. No exemplo a seguir, passaremos pelo mais seguro e típico deles: o fluxo de código de autorização. Este é também o fluxo utilizado pelo Logto.

Aspectos distintivos do OIDC e SAML

  • Dado seu desenvolvimento mais recente, OIDC é mais adequado para autenticação de aplicativos modernos em comparação com o padrão SAML mais antigo.
  • Historicamente, o SAML precede o OIDC e foi integrado em inúmeros sistemas corporativos estabelecidos.
  • Em contraste com os documentos XML mais robustos do SAML, os JWTs do OIDC são compactos e mais amigáveis para processamento.
  • Configurar o OIDC é geralmente mais simples do que o SAML.
  • Uma característica chave do OIDC é sua definição de "escopos", permitindo que IdPs gerenciem uma variedade de permissões. Aplicações podem solicitar permissões específicas dos IdPs, que são concedidas após a aprovação do usuário. Este atributo do OIDC oferece aos IdPs controle granular sobre as permissões.

Como escolher entre OIDC e SAML?

Ambos OIDC e SAML são sistemas de autenticação robustos, cada um com suas forças únicas. A escolha depende das necessidades específicas da sua organização.

  • Para uma implementação rápida e eficiente da plataforma de identidade, o OIDC é preferível ao SAML. Implementar o OIDC é mais simples, evitando o manuseio complexo de XML que o SAML requer para análise de metadados, processamento de solicitação de autenticação e análise de asserção SAML.
  • O OIDC é ideal para ambientes com interações extensas de API e mecanismos sofisticados de permissão, oferecendo controle mais adaptável e eficiente sobre permissões e uma experiência superior para desenvolvedores.
  • Ao integrar com sistemas estabelecidos que são baseados em SAML, escolher o SAML garante uma interoperabilidade mais suave do sistema e reduz o esforço necessário para integrar diferentes protocolos.

Existem boas soluções disponíveis no mercado?

O Logto, uma solução de identidade popular entre desenvolvedores, recentemente introduziu a funcionalidade Enterprise SSO. Ele oferece suporte para ambos os protocolos SAML e OIDC, além de integrações prontas para uso com IdPs mainstream como o Google Workspace e o Microsoft Entra ID (anteriormente Azure AD). Com o Logto, você pode evitar as complexidades de implementar o SSO por conta própria. Algumas etapas simples de configuração habilitam o suporte ao SSO no seu sistema de identidade, permitindo que você selecione o protocolo apropriado para atender às necessidades do seu negócio.