Tudo que você precisa saber sobre OAuth2 e OpenID Connect

21 ago 2020 | OAuth2, OpenID Connect, Otimização, Serviços Digitais

De um lado, um determinado recurso e do outro, um usuário. Ou seja, uma entidade que acessa um recurso de alguma forma. Portanto, são duas coisas fazendo uma ação.
Para começar, isso é algo de missão crítica. Ou seja, quando algo dá errado aqui, na sequência tudo dá muito errado. Por isso, merece respeito, atenção e preparação. Mas é complexo, porque o produto cartesiano dos fatores entra em jogo e determina o que deve ser feito para ter uma solução viável.
Provavelmente, todos somos membros de alguma rede social ou funcionário de alguma empresa. Como resultado, nossas identidades estão em algum banco de dados, determinando como extraímos essas informações.
Sem dúvidas, no gerenciamento de identidade, teremos contato com muitos protocolos. Desse modo, os que ocorrem todos os dias são:
  • OpenID Connect, usado para fazer login.
  • OAuth2, a base do OpenID Connect, um protocolo de delegação que ajuda a acessar APIs de terceiros.
  • JSON Web Token ou JWT, um formato de token padrão. A maioria dos tokens está neste formato SAML, um protocolo legado (mas ainda muito ativo) para fazer logon único em domínios.
  • SAML, ainda muito usado hoje e também define um token padrão.

Autorização Delegada: OAuth2

Em princípio, OAuth2 foi projetado para a implementação de acesso delegado. Porém, sem propriedades ruins de abordagem de força bruta. Por certo, OAuth2 introduz a autorização de servidor que lida com operações de autorização delegada, com dois pontos de extremidade:
  • Endpoint de autorização. Lida com a interação com o usuário final, permitindo que ele defina se um serviço pode ou não acessar seus recursos. O terminal de autorização lida com componentes interativos da transação de autorização delegada.
  • Token do endpoint. Lida com comunicação de software para software, se encarregando de executar da forma como o usuário deu permissão, consentimento, delegação e conceitos semelhantes.
Por exemplo, o LinkedIn que pede o acesso à API do sua conta no Gmail, como parte da sua sessão. Sem dúvidas, isso significa que, para o OAuth2, o usuário permite no Gmail que o LinkedIn veja seus contatos e envie e-mail em seu nome:
OAuth2 & OpenID Connect
Então, assim que o usuário dá a permissão, o servidor emite um código de autorização – uma string opaca. Por sua vez, essa string funciona como um lembrete de que o usuário cedeu essas permissões. Logo depois, o código retorna ao LinkedIn através do navegador. Em seguida, o resto da transação ocorre no lado do servidor, que emitirá um novo de token de acesso, permitindo que o LinkedIn acesse as APIs do Gmail em nome do usuário.
Por fim, esse mecanismo resolveu o problema de permissões excessivas, expressando e cumprindo a autorização delegada. Na prática, o OAuth2 atua em todos os lugares e envolve-se em todos os tipos de abusos. Ou seja, é usado de maneiras para os quais não foi projetado.

Um exemplo de abuso de OAuth2

Conforme cenários de autorização delegada ganharam força, muitos desenvolvedores queriam fazer mais do que chamar APIs. Eles almejavam o espaço do consumidor, sendo conquistado com o SAML. Além disso, queriam dar permissão aos usuários para reutilizar contas um sistemas diferente, para entrar em seus aplicativos.
Por exemplo, no LinkedIn, usuários usam uma conta do Gmail para fazer login, sem precisar criar uma nova conta. No entanto, OAuth2 não foi projetado para implementar operações de login. A maioria dos provedores o expôs apenas para suportar a autorização delegada para sua API e não um login adequado. Porém, isso não impediu que desenvolvedores aproveitassem os fluxos OAuth2 para conseguir isso.
OAuth2 & OpenID Connect
Então, o LinkedIn obtém acesso às APIs do Gmail, sem que o usuário autenticado esteja conectado. Dessa forma, assim que acessa com sucesso essas APIs, o considera autenticado – o que, na prática, é implementado com um cookie de sessão.
De fato, esse padrão de implementação ainda é uma prática comum. Mesmo que não seja uma boa ideia, já que tokens de acesso são opacos para solicitantes, tornando detalhes importantes impossíveis de verificar.
Só para ilustrar, quando um token de acesso chama uma API, não significa que foi emitido para o seu cliente ou outro aplicativo. Portanto, esse token pode ser obtido por outro aplicativo. Assim, se o LinkedIn usasse apenas esse token para chamar a API, seria enganado criando uma sessão autenticada. Desse modo, não há como padronizar o fluxo de login baseado em OAuth2. O que impossibilita criar um padrão para implementar o login com provedores de redes sociais, mesmo que seja suportado corretamente.

Então, para formalizar a entrada em camadas de OAuth2, uma nova especificação foi introduzida: o OpenID Connect.

Camada de login no topo do OAuth2: OpenID Connect

Por analogia, um servidor de autorização emite o ID de token através dos fluxos do OAuth2. Então, OpenID Connect descreve como os aplicativos solicitam, em vez de um token de acesso, um ID de token.
OAuth2 & OpenID Connect
Desse modo, o cliente consome um ID de token, em vez de usá-lo para acessar um recurso. Já que usar um formato conhecido e ser emitido para o cliente pode significar que, quando solicitado e obtido, ele mesmo pode inspecionar e validar. Assim como aplicativos da web, protegidos por SAML inspecionados e validados por tokens SAML.
Além disso, significa que é capaz de extrair informações de identidade dele, sendo possível obter o login usando OAuth2. Porém, há mais novidades do OpenID Connect. Novas formas de solicitação de tokens foram introduzidas, incluindo a apresentação do ID de token ao cliente pelo canal frontal, entre navegador e aplicativo. Portanto, é possível implementar o login de forma fácil, sem segredos e com fluxos de integração posterior, como padrão de invocação da API OAuth2 canônico requerido.

Por fim, acesse todo o conteúdo no ebook completo e gratuito OAuth2 e OpenID Connect: Guia Profissional – Beta. Baixe agora mesmo e tenha o material para ler quando quiser e consultar sempre que precisar!

Ebook Gratuito:

OAuth2 e OpenID Connect: Guia Profissional – Beta

Neste ebook, você:

  • Aprenderá a juntar muitas partes separadas para fazer a autenticação e a autorização delegada.
  • Descobrirá como os requisitos de autenticação e autorização mudaram nos últimos anos e como os protocolos padrão de hoje evoluíram.
  • Entenderá os porquês e os comos do OAuth2 e do OpenID Connect.
  • Aprenderá quais partes do protocolo são apropriadas para usar para cada um dos cenários clássicos e tipos de aplicativo.
  • Compreenderá cada troca e cada parâmetro em detalhes.

Baixe o ebook de graça!

Preencha o formulário para ter acesso ao download:

0 comentários

Enviar um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Siga-nos!
AdviseU IT logo
Siga-nos!
Copyright © 2019 AdviseU. Todos os direitos reservados. | Um blog dedicado a quem ama aprender.
Share This