Quais são as diferenças entre SAML e OIDC?
Neste artigo, fornecemos uma visão geral dos protocolos SAML e OIDC, juntamente com os seus fluxos de autenticação típicos. Comparamos as diferenças distintas, vantagens e desvantagens de cada protocolo. Além disso, com base em cenários potenciais de utilizadores, oferecemos orientações sobre como escolher entre estes dois protocolos.
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 utilizador e controlo de acesso. Cada protocolo define o seu próprio mecanismo para manter a identidade dos utilizadores autenticados, que é então usada para conceder ou negar acesso a aplicações protegidas.
O que são SAML e OIDC?
IdPs mantêm bases de dados de informações de identidade dos utilizadores. Provedores de Serviços (SPs) dependem desta informação para autenticar utilizadores, por vezes permitindo que uma única autenticação seja usada em várias aplicações (autenticação única). OIDC e SAML são padrões que definem como esta informação relacionada à identidade do utilizador flui entre estas duas partes. O seu objetivo final é o mesmo: autenticação do utilizador. No entanto, as abordagens fundamentais que eles tomam para alcançar este objetivo são diferentes.
SAML
SAML 2.0, desde 2005, é a versão atual do padrão. Usa XML para formatar informações de identidade, pedidos e respostas. XML é um padrão maduro para formatar documentos de uma forma que seja compreensível tanto por humanos quanto por computadores. Para transmitir ou receber informações codificadas em XML, usa pedidos básicos SOAP ou HTTP. Definido pelo protocolo SAML, o serviço que solicita informações de identidade é o Provedor de Serviços (SP).
Antes de introduzirmos o processo típico de autenticação SAML, precisamos entender os elementos em que a autenticação SAML se baseia. Antes que IdP e SP possam reconhecer-se mutuamente e completar o processo de autenticação, 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 IdP e SP gerando seus próprios pares de chaves privadas e públicas e trocando-as para assinar ou encriptar comunicações. Com os avanços na segurança da comunicação em rede, na maioria dos cenários agora só é necessário assinar pedidos, omitindo a etapa de encriptação.
- Endpoints, usados para o SP enviar pedidos de autenticação SAML para o IdP e para o SP receber assertivas SAML em resposta aos pedidos de autenticação do IdP.
- Formatos de atributos XML suportados, usados para o IdP transmitir as informações do utilizador requeridas ao SP após completar a autenticação.
Uma vez que IdP e SP estejam cientes das informações mencionadas, podem prosseguir com o processo de autorização (um fluxo típico de autenticação iniciado por SP):
OIDC
OIDC é um protocolo contemporâneo que melhora o framework OAuth 2.0. Emprega JSON-based Web Tokens (JWT) para construir cargas de dados. Os JWTs, uma norma estabelecida na indústria, definem diretrizes para a troca segura e representação de afirmações entre entidades. Essas afirmações, essencialmente dados de utilizador encriptados, são cruciais para a verificação e gestão de identidade. OIDC usa principalmente o HTTPS ubíquo 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 seguinte, vamos passar pelo mais seguro e típico deles: o fluxo de código de autorização. Este é também o fluxo utilizado pelo Logto.
Aspetos distintivos do OIDC e SAML
- Dado seu desenvolvimento mais recente, o OIDC é mais adequado para a autenticação de aplicações modernas em comparação com o antigo padrão SAML.
- Historicamente, o SAML precede o OIDC e tem sido integrado a inúmeros sistemas corporativos estabelecidos.
- Em contraste com os documentos XML mais volumosos do SAML, os JWTs do OIDC são compactos e mais fáceis de processar.
- Configurar o OIDC é geralmente mais direto do que o SAML.
- Uma característica chave do OIDC é a sua definição de “escopos”, permitindo que IdPs administrem uma variedade de permissões. As aplicações podem solicitar permissões específicas dos IdPs, que são concedidas após a aprovação do utilizador. Este atributo do OIDC oferece aos IdPs um controle granular sobre permissões.
Como deve-se escolher entre OIDC e SAML?
Tanto o OIDC quanto o SAML são sistemas de autenticação robustos, cada um com as suas próprias forças. A escolha depende dos requisitos específicos da tua organização.
- Para implantação rápida e eficiente de uma plataforma de identidade, o OIDC é preferível ao SAML. Implementar OIDC é mais simples, evitado o manuseio complexo de XML que o SAML requer para análise de metadados, processamento de pedidos de autenticação e análise de assertivas SAML.
- OIDC é ideal para ambientes com extensas interações API e mecanismos de permissão sofisticados, oferecendo controle mais adaptável e eficiente sobre permissões e uma experiência de desenvolvimento superior.
- Ao integrar com sistemas estabelecidos que são baseados em SAML, escolher SAML garante uma interoperabilidade de sistema mais suave e reduz o esforço necessário para fazer a ponte entre diferentes protocolos.
Existem boas soluções disponíveis no mercado?
Logto, uma solução de identidade popular entre desenvolvedores, recentemente introduziu a funcionalidade de SSO Enterprise. Oferece suporte para ambos os protocolos SAML e OIDC, juntamente com integrações pré-configuradas para IdPs mainstream como Google Workspace e Microsoft Entra ID (anteriormente Azure AD). Com o Logto, podes evitar as complexidades de implementar SSO por conta própria. Alguns passos simples de configuração habilitam o suporte a SSO no teu sistema de identidade, permitindo que escolhas o protocolo apropriado para atender às necessidades do teu negócio.