SAML vs. OAuth: Qual Devo Utilizar?

Como parte do projecto PicketLink (http://www.picketlink.org ), são-me feitas perguntas sobre vários aspectos de segurança, confiança e gestão de identidade.

Uma das principais perguntas que me fazem é – “Qual é a diferença entre o SAML e o OAuth? Espero poder utilizar este artigo para dar a minha opinião sobre este tópico importante. Tentarei também apontar vários casos de uso onde cada um é preferido.

Qual é a Grande Diferença entre o SAML e o OAuth?

Informalmente nas minhas próprias palavras:

SAML (Security Assertion Markup Language) é um padrão que engloba perfis, ligações e construções para conseguir Single Sign On (SSO), Federation and Identity Management.

OAuth (Open Authorization) é um padrão para a autorização de recursos. Não lida com autenticação.

Para definições formais,

P>Segundo a página wikipedia no SAML:

Security Assertion Markup Language é um formato de dados padrão aberto baseado em XML para o intercâmbio de dados de autenticação e autorização entre partes, em particular, entre um fornecedor de identidade e um fornecedor de serviços.

segundo OAuth.net

Um protocolo aberto para permitir autorização segura num método simples e padrão a partir de aplicações web, móveis e desktop.

Quais são as Outras Diferenças?

1. Token ou Formato de Mensagem<

SAML lida com XML como o formato de construção de dados ou token.

fichas OAuth podem ser binárias, JSON ou SAML como explicado em OAuth Bearer Tokens.

2. Transport

SAML tem Bindings que utilizam HTTP tais como HTTP POST Binding, HTTP REDIRECT Binding etc.

Mas não há restrições quanto ao formato de transporte. Pode usar SOAP ou JMS ou qualquer transporte que queira usar para enviar fichas ou mensagens SAML.

OAuth usa exclusivamente HTTP.

3. Âmbito

P>SAML foi concebido para ser aplicável abertamente, é tipicamente utilizado em cenários SSO Empresarial –

  • within an enterprise or
  • enterprise to partner or
  • enterprise to cloud scenarios.

OAuth foi concebido para utilização com aplicações na Internet, principalmente para autorização delegada de recursos da Internet. OAuth foi concebido para a Internet Scale.

Quais as versões das normas que devo utilizar?

SAML v2.0 e OAuth v2.0 são as últimas versões das normas.

Quando devo utilizar qual?

  • Se a sua usecase envolve SSO (quando pelo menos um actor ou participante é uma empresa), então use SAML.
  • Se a sua usecase envolve fornecer acesso (temporário ou permanente) a recursos (tais como contas, imagens, ficheiros, etc.), então use OAuth.
  • Se necessitar de fornecer acesso a uma aplicação de parceiro ou cliente ao seu portal, então use SAML.
  • Se a sua usecase requer uma fonte de identidade centralizada, então use SAML (Identity provider).
  • Se a sua usecase envolve dispositivos móveis, então o OAuth2 com alguma forma de Tokens Bearer é apropriado.

I Want to Use Both SAML and OAuth. Posso I?

P>Pode usar o SAML para autenticação. Assim que tiver um token/asserção SAML, pode utilizá-lo como o token portador do OAuth no cabeçalho portador HTTP para aceder a recursos protegidos.

Recentemente, temos tido um requisito da comunidade PicketLink neste sentido.

https://docs.jboss.org/author/display/PLINK/REST+Service+to+convert+SAML+Tokens+Into+OAuth+Tokens

Qual é a Alternativa aos Tokens XML SAML no Mundo OAuth?

Leia no Token Web JSON (JWT): https://datatracker.ietf.org/doc/draft-ietf-oauth-json-web-token/

Fichas portadoras JWT podem ser usadas com OAuth2.

Existe trabalho em curso na fundação OpenID com OpenID Connect. http://openid.net/specs/openid-connect-basic-1_0-22.html

OpenID Connect é uma camada de identidade no topo do OAuth2 que pode fornecer informações de perfil dos utilizadores a partir dos servidores de autorização (com base na autenticação que realizou).

  • PicketLink Open Source Project at http://www.picketlink.org
  • OAuth Theory on PicketLink site.
  • li>IETF Web Authorization Working Group (http://datatracker.ietf.org/wg/oauth/charter/)li>IETF OAuth2 (http://datatracker.ietf.org/doc/rfc6749/)li>Google OAuth Document (https://developers.google.com/accounts/docs/OAuth2)li>Microsoft Windows Live OAuth2 Document (http://msdn.microsoft.com/en-us/library/live/hh243647.aspx)li>Amazon Web Services e SAML http://aws.typepad.com/aws/2013/11/aws-identity-and-access-management-using-saml.html li>Salesforce SAML. https://help.salesforce.com/apex/HTViewHelpDoc?id=sso_saml.htm&language=en

  • Google Apps SAML. https://developers.google.com/google-apps/sso/saml_reference_implementation
  • OpenID Connect http://openid.net/specs/openid-connect-basic-1_0-22.html

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *