SAML (Security Assertion Markup Language) permite acesso seguro e contínuo a várias aplicações por meio da troca de dados de autenticação entre um Provedor de Identidade (IdP) e um Provedor de Serviço (SP).
Isso permite que os usuários façam login uma vez e acessem vários serviços sem a necessidade de reentrar credenciais, melhorando a segurança e a experiência do usuário em ambientes corporativos. Neste post, exploraremos como o SAML funciona e seus benefícios.
O que é o Security Assertion Markup Language (SAML)?
A autenticação SAML (Security Assertion Markup Language) permite acesso seguro a serviços por meio da troca de dados de autenticação e autorização entre um Provedor de Identidade (IdP) e um Provedor de Serviço (SP). Este protocolo é comumente usado em ambientes corporativos para fornecer aos usuários um acesso contínuo a várias aplicações usando um único conjunto de credenciais.
Componentes SAML
Aqui estão os principais componentes e conceitos do SAML:
- Provedor de Identidade (IdP): Esta é a entidade que autentica um usuário e fornece uma afirmação ao provedor de serviço. A afirmação contém informações sobre a identidade e atributos do usuário.
- Provedor de Serviço (SP): Esta é a entidade que recebe a afirmação SAML e toma decisões de controle de acesso com base nela. O provedor de serviço confia no provedor de identidade para autenticar usuários.
- Afirmação SAML: Este é o documento XML que o provedor de identidade envia ao provedor de serviço. Ele contém informações de autenticação, informações de atributos e decisões de autorização.
- Single Sign-On (SSO): O SAML é comumente usado para implementar o SSO, permitindo que os usuários autentiquem uma vez com um provedor de identidade e ganhem acesso a vários provedores de serviço sem re-autenticar.
- Bindings: O SAML suporta múltiplos bindings para transporte de mensagem, incluindo HTTP Redirect, HTTP POST, e SOAP.
- Protocolo Baseado em XML: O SAML usa XML para codificar as mensagens que são trocadas entre o provedor de identidade e o provedor de serviço.
SAML 2.0
Com base no conceito de SAML, vamos nos aprofundar no SAML 2.0, que é a versão mais amplamente utilizada do padrão. O SAML 2.0 introduziu várias melhorias e recursos em relação ao seu antecessor, SAML 1.1:
- Melhorias na Single Sign-On (SSO): O SAML 2.0 melhorou as capacidades de SSO, tornando mais fácil de implementar e mais robusto em termos de segurança e experiência do usuário.
- Federação de Identidade: Permite uma federação de identidade mais contínua entre diferentes domínios, tornando possível que usuários acessem recursos entre diferentes organizações com um único processo de autenticação.
- Suporte para Múltiplos Contextos de Autenticação: O SAML 2.0 pode gerenciar diferentes níveis de garantia de autenticação, permitindo o uso de métodos de autenticação mais fortes quando necessário.
- Troca de Metadados: Esta versão suporta a troca de metadados entre provedores de identidade e provedores de serviço, o que ajuda a automatizar a configuração e o estabelecimento de relacionamentos de confiança.
- Melhorias nos Bindings de Protocolo: O SAML 2.0 inclui melhor suporte para vários protocolos de transporte, como HTTP Redirect, HTTP POST, e Artifact Binding, aumentando flexibilidade e compatibilidade.
- Consulta de Atributos e Consentimento: O SAML 2.0 permite consultar atributos do usuário e gerenciar o consentimento do usuário de forma mais eficiente, melhorando o controle do usuário sobre dados pessoais.
Como Funciona a Autenticação SAML?
Processo de Autenticação
A autenticação SAML começa quando um usuário inicia o processo de login inserindo suas credenciais no IdP. O IdP verifica a identidade do usuário e cria uma afirmação SAML, que contém atributos do usuário e informações de autenticação.
Essa afirmação inclui detalhes como a identidade do usuário, hora da autenticação e as condições sob as quais a afirmação é válida. Para garantir a integridade e autenticidade das informações, a afirmação é assinada digitalmente pelo IdP.
Acesso ao Serviço
Uma vez autenticado, o usuário tenta acessar um serviço fornecido pelo SP. O SP, precisando verificar a identidade do usuário, redireciona o usuário para o IdP com uma solicitação de autenticação. O IdP responde enviando a afirmação SAML ao SP, normalmente através do navegador do usuário usando HTTP POST ou HTTP Redirect.
O SP então valida a afirmação SAML verificando a assinatura digital e as condições da afirmação. Se a afirmação for válida, o SP concede ao usuário acesso ao serviço solicitado. Este processo é transparente para o usuário, que precisa apenas fazer login uma vez para obter acesso a vários serviços.
Cenário Exemplo
Considere um cenário corporativo típico. No início da jornada de trabalho, John faz login no sistema de Gestão de Identidade e Acesso (IAM) de sua empresa, que serve como o IdP, usando suas credenciais corporativas.
O IdP verifica as credenciais de John e cria uma afirmação SAML, que inclui informações como o nome de usuário de John, o timestamp de autenticação e atributos de acesso baseados em função. John então tenta acessar o serviço de e-mail hospedado da empresa, um SP.
O serviço de e-mail redireciona John para o IdP com uma solicitação de autenticação. O IdP envia a afirmação SAML de volta ao serviço de e-mail através do navegador de John. O serviço de e-mail valida a afirmação verificando a assinatura digital e garantindo que todas as condições sejam atendidas, como a afirmação ser destinada ao serviço de e-mail e não estar expirada.
Uma vez validada, John recebe acesso ao serviço de e-mail sem precisar reentrar suas credenciais, permitindo que ele use o serviço de maneira contínua.
Benefícios da Autenticação SAML
Ao integrar a autenticação SAML, as organizações podem simplificar a gestão de acesso do usuário, melhorar a segurança ao reduzir o risco de fadiga e reutilização de senhas, e fornecer aos usuários acesso contínuo a várias aplicações. Essa integração melhora, em última análise, tanto a eficiência operacional quanto a postura de segurança.
O que é uma Afirmação SAML?
Uma Afirmação SAML é um documento XML emitido por um Provedor de Identidade SAML (IdP) e consumido por um Provedor de Serviço (SP). Ele contém declarações sobre um usuário que ambas as partes podem confiar.
O principal objetivo da Afirmação SAML é transmitir informações de segurança entre o IdP e o SP de maneira segura e padronizada. Aqui estão os principais componentes e tipos de declarações encontrados em uma Afirmação SAML:
Componentes Chave
- Emissor: A entidade que emitiu a afirmação, tipicamente o IdP.
- Assunto: O usuário ou entidade sobre o qual a afirmação se refere. Isso geralmente inclui um identificador único para o usuário.
- Condições: Restrições e regras sob as quais a afirmação é válida, incluindo restrições de tempo e restrições de público.
- Declaração de Autenticação: Informações sobre a autenticação do usuário no IdP, como o método de autenticação e o timestamp.
- Declaração de Atributo: Uma coleção de atributos sobre o usuário, como nome, endereço de e-mail, funções, etc.
- Declaração de Decisão de Autorização: Informações sobre os direitos de acesso do usuário a recursos específicos.
Tipos de Declarações
- Declaração de Autenticação: Descreve o ato de autenticação no IdP, incluindo o método utilizado e o momento da autenticação.
- Declaração de Atributo: Contém atributos associados ao sujeito. Por exemplo, o endereço de e-mail de um usuário, funções ou outras informações relevantes.
- Declaração de Decisão de Autorização: Fornece informações sobre se um usuário está autorizado a acessar um recurso específico. Isso inclui a decisão (permitir ou negar) e o recurso em questão.
Como Funciona a Afirmação SAML
- Usuário Solicita Acesso: O usuário tenta acessar um recurso no SP.
- SP Solicita Autenticação: O SP redireciona o usuário para o IdP para autenticação.
- Usuário Se Autentica: O usuário fornece credenciais ao IdP.
- IdP Emite Afirmação: Após a autenticação bem-sucedida, o IdP gera uma Afirmação SAML e a envia de volta ao SP, tipicamente através do navegador do usuário.
- SP Valida Afirmação: O SP valida a afirmação, verificando sua integridade, a validade do emissor e as condições.
- Acesso Concedido: Se a afirmação for válida, o usuário recebe acesso ao recurso.
Considerações de Segurança
- Criptografia: As Afirmações SAML podem ser criptografadas para garantir a confidencialidade.
- Assinatura: As afirmações são frequentemente assinadas para garantir sua integridade e autenticidade.
- Expiração: As afirmações incluem condições, como limites de tempo, para mitigar o risco de ataques de repetição.