Logo Logo
GitHub Designed by Logto

O que é SAML?

SAML (geralmente referido como SAML 2.0) é um padrão baseado em XML para a troca de dados de autenticação (authentication) e autorização (authorization) entre duas partes: o Provedor de identidade (IdP) e o Provedor de serviço (SP) . É amplamente utilizado para federação de identidade e soluções de SSO Empresarial .

Como o nome sugere, SAML transmite asserções sobre a identidade e atributos do utilizador. Estas asserções são assinadas digitalmente e, opcionalmente, criptografadas para garantir a sua integridade e confidencialidade.

Como funciona o SAML?

Antes de mergulhar no fluxo de autenticação (authentication) do SAML, precisamos entender como os identity providers e service providers podem reconhecer e confiar uns nos outros. Esta confiança é estabelecida através da troca de metadados, onde ambas as partes compartilham informações sobre:

  • Entity ID: Um identificador único para o identity provider ou service provider.
  • Chave pública: Usada para verificar as assinaturas digitais nas asserções SAML.
  • Endpoints: URLs para diferentes operações SAML, como authentication requests e respostas.

Uma vez estabelecida a confiança, o fluxo de autenticação SAML pode prosseguir:

RelayState

No fluxo SAML, o parâmetro RelayState é usado para manter o estado do utilizador durante o processo de autenticação. Atua como uma referência ao pedido original feito pelo utilizador antes de ser redirecionado para o identity provider. O service provider pode usar este parâmetro para redirecionar o utilizador de volta à página ou recurso original após a autenticação bem-sucedida.

RelayState também é usado para prevenir ataques de Falsificação de solicitação entre sites (CSRF) garantindo que o utilizador seja redirecionado de volta para a página correta após a autenticação.

Asserções SAML

As asserções SAML são o componente central do protocolo SAML. Elas contêm informações sobre a identidade do utilizador, atributos e status de autenticação. Existem três tipos de asserções SAML:

  • Asserção de autenticação: Indica que o utilizador foi autenticado pelo identity provider.
  • Asserção de atributo: Contém informações adicionais sobre o utilizador, como roles, permissões e dados de perfil.
  • Asserção de decisão de autorização: Especifica os direitos de acesso do utilizador a recursos específicos.

Considerações para adotar SAML

SAML é amplamente adotado em ambientes empresariais desde o seu início no início dos anos 2000. Aqui estão algumas considerações importantes ao adotar SAML para as suas aplicações:

  • Complexidade: As implementações de SAML podem ser complexas ao integrar com as suas aplicações, especialmente em comparação com frameworks modernos como OAuth 2.0 e OpenID Connect (OIDC) .
  • Eficiência de transporte: As mensagens SAML podem ser grandes devido à formatação XML, o que pode impactar o desempenho da rede.
  • Segurança: As asserções SAML devem ser protegidas contra adulteração e escuta. Certifique-se de que a sua implementação SAML segue as melhores práticas para criptografia e assinaturas digitais.

Apesar destas considerações, SAML continua a ser um padrão robusto e amplamente utilizado para federação de identidade segura e soluções de single sign-on em ambientes empresariais. No entanto, para novas aplicações ou serviços, pode considerar alternativas modernas como OAuth 2.0 e OpenID Connect para uma abordagem mais leve e amigável ao desenvolvedor para autenticação (authentication) e autorização (authorization).

Veja também