SAML x OAuth

Publicado

Por

Alfredo Santos

É vital que uma empresa consiga escolher o sistema adequado para o processo de login dos seus usuários. Essa escolha impacta, entre outras questões, na segurança dos dados que ficam disponíveis, principalmente, àqueles que possuem acesso privilegiado. SAML e OAuth são alternativas para essa finalidade, porém com diferenças não tão bem conhecidas. 

Neste artigo entenderemos o que distingue SAML e OAuth e quais são os cenários de uso mais adequados para cada um deles.

SAML 

A sigla para o termo em inglês Security Assertion Markup Language pode ser associada a um esquema de autenticação que permite a realização de login em múltiplos sites, plataformas ou aplicações graças ao SSO (single sign on). É com base em asserções que a SAML também entrega dados em XML sobre os usuários, garantindo assim que os mesmos sejam devidamente autenticados. Resumidamente, estamos falando de um fluxo que tem como foco a confirmação de identidade. 

Como é o funcionamento?

Agora vamos mapear a lógica por trás desse mencionado esquema. Para que a interação com a SAML seja bem sucedida, é necessário envolver não somente um provedor de serviço, mas também um provedor de identidade. Vamos supor que o provedor de serviço seja o Google. Se alguém tenta acessar o Gmail, por exemplo, isto é o que acontece:

  • o Google envia uma solicitação de SAML para o navegador
  • o navegador tenta se conectar com o provedor de identidade
  • os dados credenciais do usuário são solicitados pelo serviço de SSO
  • o usuários fornece os seus dados credenciais, nesse caso sendo e-mail e senha
  • o provedor de identidade retorna com uma SAML para indicar o nível de acesso que o usuário tem direito

Se o usuário já foi autenticado, não há necessidade de fornecer os dados credenciais novamente em um posterior acesso. É neste ponto da jornada que SAML surge como um diferencial, economizando tempo investido em login.

Protocolo

Conforme mencionado, a função primordial de SAML é autenticar – ou seja, garantir que os usuários são quem alegam ser. Para que isso aconteça, o provedor de identidade retorna uma SAML para confirmar a identidade do usuário que está tentando se logar. Uma vez que os usuários não precisam criar nem manter credenciais para cada aplicação que usam, a experiência se torna muito mais fluida para perfis que se sentem incomodados com a concessão frequente de acesso.

O protocolo pode ser considerado eficaz para a realização de login único entre plataformas que funcionam separadamente, assim como o Jira (ferramenta que monitora e acompanha tarefas e projetos) e o Salesforce (software com enfoque em gerenciamento de relacionamentos) ou entre grandes plataformas de nuvem, assim como o Zendesk (software para otimizar o atendimento ao cliente).

OAuth

OAuth é um protocolo de autorização que concede a autenticação de uma aplicação dentro de outra. Quando o OAuth é acionado, o usuário que tenta realizar login é direcionado para servidor de autorização. Surge a já conhecida tela de login, mas que não vai garantir acesso direto à aplicação primária. Ao invés disso, ocorre o redirecionamento para que os dados do usuário sejam acessados.

Como é o funcionamento?

Não existe um único fluxo para o OAuth. Vamos conhecer 2 tipos:

  • Concessão implícita depreciada
    O usuário fornece as suas credenciais para que o servidor de autorização conceda o seu token de acesso e o redireciona para um URI (identificador uniforme de recurso). 
  • Concessão de de código de autorização
    O servidor de autorização faz o redirecionamento do usuário novamente para a aplicação de origem por meio de um código no URI (identificador uniforme de recurso). A aplicação, por sua vez, solicita que o servidor de autenticação forneça um token de acesso, baseando-se em código e credenciais do usuário.

Protocolo

A função primordial de OAuth é agir como um sistema de autorização, determinando quais permissões são concedidas a cada perfil de usuário. Igualmente, esse protocolo outorga aos desenvolvedores a autenticação de usuários sem que as suas credenciais sejam exigidas.

Tal simplificação na experiência de login faz de OAuth a resposta ideal quando um aplicativo do tipo React está sendo desenvolvido, pois a concessão de acesso aos usuários acontece de maneira segura, não importa qual estrutura esteja sendo adotada. 

Qual é a melhor escolha?

Não dá para determinar se OAuth é melhor que SAML e vice-versa. Tratam-se de soluções diferentes, mesmo que para problemas bastante parecidos. Todavia, vejamos um rápido raio-x de ambas as alternativas:

SAML

Indicada para organizações de grande porte, presenteando conveniência aos usuários que costumam acessar múltiplos serviços. A única ressalva está no uso do XML para entrega de dados, o que pode dificultar o emprego da linguagem. 

OAuth

Indicado para aplicações mais modernas instaladas em mais de 1 dispositivo, pois é mais flexível e fácil de usar. Além disso, quando o OAuth é expandido para o chamado OpenID Connect (OIDC), baseado no OAuth2, tanto a autorização quanto a autenticação se tornam ainda mais seguras mediante a implementação de serviços terceirizados.

Alfredo Santos

Alfredo Santos é um líder na comunidade brasileira de IAM, professor do assunto na FIA, Autor de livros de IAM/IAG e responsável pelo evento IAM Tech Day. Possui 25 anos de experiência no assunto IAM por ter atuado em empresas e projetos importantes, alguns deles em âmbito global. Atualmente lidera projetos globais de IAM que afeta grupos de empresas nas Américas, Asia e Europa.

Linkedin: https://www.linkedin.com/in/alfredosantos/