Se o globo.com pedisse suas credenciais do Google, você entregaria sorrindo? Parece estranho, né? Mas é isso que o modo Resource Owner Password Credential (ROPC) faz com sua vida digital. Vamos lá!

Dirty work

Os desenvolvedores, sempre explorando o mundo do OAuth2 quando se perdem nos Microsserviços. Lá estão os times .NET, encantados com o IdentityServer4, achando que resolveram identidade e autorização rapidinho. Até que começam as dúvidas sobre o OAuth2 & OIDC, surgindo como pipoca no micro-ondas.

Microsserviços

O mundo dos Microsserviços! Se você já pensou em entrar nesse universo, já deve ter visto apresentações legais de Elemar Jr ou Milton Câmara. A primeira lição: tenha um Authorization Server antes até de tomar seu café.

A jornada

Imagine: você está lidando com um Monolito! Isso mesmo, um daqueles sistemas gigantes em uma grande empresa que adora seus sistemas e APIs. Identidade já deveria ser um problema resolvido... ou talvez não.

Entra o famoso Resource Owner Password Credential (ROPC), a solução rápida para integrar o IdentityServer4. Por que criar um login do zero quando você pode só remendar algo?

Por que?

No mundo corporativo, criar “usuário e senha” é coisa de um passado distante. Nos exemplos do IdentityServer, você encontra um servidor básico que te deixa achar que tudo é fácil.

Nesse conjunto de siglas mágicas da tecnologia, surgem as perguntas: Como seu sistema atual se encaixa nesse novo cenário?

"Autenticação já existe!", dizem por aí. Vamos usar o ROPC, mandar as credenciais para o IdentityServer4 e, voilá! Um token na mão e problema resolvido. Criar outro fluxo de login? Que piada.

Usar ROPC parece tão genial que o OAuth Working Group já o chamou de uma relíquia de tempos mais simples.

School Image

Resource Owner Password Credentials

A famosa RFC diz que só use o ROPC se o client e o server forem bem amigos.

O ROPC é adequado quando o dono dos recursos confia no cliente, como em um sistema operacional de dispositivo ou uma aplicação de alto privilégio. O servidor de autenticação deve ter cuidado ao habilitar este tipo e só usá-lo quando outros fluxos não forem viáveis.
RFC 6749 The OAuth 2.0 Authorization Framework - Section 4.3

Você se pergunta: "Por que criar um novo login se já tenho vários prontos? É só usar o ROPC!"

Olha só, benefícios na hora! Tokens JWT mágicos, com refresh token e tudo mais que faz o OAuth parecer a solução do futuro.

Com tudo isso, por que alguém evitaria?

Por que evitar?

Apesar de o ROPC parecer lindo, ele traz problemas.

Impersonate

Pronto, você abriu as portas para os invasores. O ROPC é o paraíso deles. Está competindo com phishing para ver quem faz mais vítimas.

Single Factor auth

E não se engane! O ROPC não é AUTENTICAÇÃO. Ama 2FA ou 3FA? Infelizmente, o ROPC não exige nada disso.

Má prática

Lembra do exemplo da Globo? Se o Client usa ROPC, é como se Globo.com te pedisse suas credenciais do Google em vez de te mandar pro site do Google.

A RFC do OAuth2 já avisa que isso é uma cagada.

Este tipo de concessão tem um risco maior porque mantém o anti-padrão de senha que este protocolo tenta evitar.
RFC 6749 The OAuth 2.0 Authorization Framework - Section 10.7

Todos acessos do usuário

Cuidado! Mesmo com promessas de limitar Scopes, um desenvolvedor mal-intencionado com suas credenciais pode acessar APIs proibidas.

Não é Single Sign On

Sem redirecionamento e afins, você perde o conceito de Single Sign On e Single Sign Out.

Federation Gateway

Login via redes sociais? Esqueça, ROPC só ama “usuário e senha”. Provedores externos? Sonhe.

Segurança

Se você se preocupa com segurança, evite o ROPC. É um convite aberto para ataques de força bruta.

Deprecated

O grupo OAuth Working cansou de ver o desastre do ROPC e o declarou obsoleto.

ROPC não deve ser usado. Ele expõe as credenciais do dono dos recursos de forma insegura para o cliente.
OAuth 2.0 Security Best Current Practice

Client externo

Se o client é externo, guarde o ROPC na gaveta, junto com aquela meia sem par.

Mais motivos?

Quer mais razões para evitar ROPC? A RFC continua explicando:

Porque o dono dos recursos não controla o processo de autorização, o cliente pode obter tokens com escopo maior do que o desejado.
RFC 6749 The OAuth 2.0 Authorization Framework - Section 10.7

Shot made while filming for yesHEis project

Evite cair nas armadilhas

Aqui estão as ciladas que levam times a abraçar o ROPC.

Frontend

Sem tempo para construir o Frontend? Não se preocupe! Projetos open source são a solução.

Não fique só no .NET! Outras opções existem, como OKTA, Auth0, e KeyCloak.

Só tenho um frontend

Está sonhando com mundos de Microsserviços, com muitas APIs? Pergunte-se: você realmente precisa de um server OAuth2? Garanta que todos os requisitos são atendidos antes de entrar nessa.

Por que usar o Auth Server

Sim, há razões para construir ou ajustar um Auth Server, usando fluxos adequados, sem o ROPC.

  • Single Sign On – Evitando repetição.
  • Protocolos consagrados: OAuth2 & OpenId Connect.
  • Segurança melhorada.
  • Compatível com modelos baseados em roles.
  • Serviço de autenticação – em um cenário de Microsserviços, é comum ter a autenticidade como serviço.

Conclusão

Apesar de o ROPC ser um atalho para desenvolvedores apressados, uma abordagem correta e segura é sempre melhor. Este texto, com um toque de humor, busca revelar algumas verdades.

Dúvidas? Críticas? Sugestões? Deixe seu comentário e vamos conversar!

Referências