SSO com SAML e OIDC: como funciona o login único nas empresas

Programação

SSO com SAML e OIDC: como funciona o login único nas empresas

Quem já trabalhou em uma empresa de médio ou grande porte provavelmente conhece a experiência de fazer login uma única vez e, a partir daí, acessar o e-mail, o sistema de chamados, a intranet e outras ferramentas sem precisar digitar senha de novo em cada uma. Esse mecanismo se chama Single Sign-On, ou SSO.

O funcionamento gira em torno de dois papéis. Existe um provedor de identidade central (Identity Provider, ou IdP), que é quem realmente autentica o usuário, e várias aplicações (Service Providers, ou SPs) que confiam nesse provedor central em vez de terem seu próprio sistema de login.

O SAML (Security Assertion Markup Language) é o protocolo mais tradicional para implementar esse modelo, muito comum em ambientes corporativos. Ele usa mensagens em XML chamadas "asserções", assinadas digitalmente pelo provedor de identidade, confirmando quem é o usuário.

<?php
use OneLoginSaml2Auth;

$auth = new Auth($configSaml);

// endpoint que recebe a resposta do provedor de identidade
$auth->processResponse();

if (!$auth->isAuthenticated()) {
    exit('Falha na autenticacao SAML.');
}

$atributos = $auth->getAttributes();
$nameId    = $auth->getNameId();

session_start();
$_SESSION['usuario_id'] = criarOuAtualizarUsuarioLocal($nameId, $atributos);

Já o SSO baseado em OpenID Connect segue a mesma lógica geral, mas usando tokens JSON em vez de mensagens XML. Um provedor de identidade central (como Keycloak, Azure AD ou Google Workspace) emite um ID Token que qualquer aplicação da organização pode validar, sem precisar reimplementar login algum.

Uma vantagem prática do OIDC nesse cenário é a possibilidade de verificar, de forma silenciosa, se já existe uma sessão ativa no provedor, sem exibir nenhuma tela de login para o usuário caso ele já esteja autenticado em outro sistema da empresa.

Na escolha entre os dois, SAML costuma aparecer em integrações com sistemas corporativos mais antigos e setor público, enquanto OIDC tende a ser a opção mais simples e mais usada em implementações novas, por depender de JSON e HTTP, tecnologias já bem conhecidas de quem desenvolve aplicações web.

Fonte
Equipe Suadica

Veja também

Mais Dicas