No ecossistema de internet de aplicativos cada vez mais entrelaçados, quando um aplicativo quer realizar alguma ação em outro aplicativo em nome de um usuário, surge uma necessidade de como fazer isso sem compartilhar a senha de um aplicativo para outro. Um exemplo comum disso é o login com o Facebook por aplicativos que querem postar algo em sua linha do tempo ou querem acessar seu Google Drive. Se você compartilhar sua senha do Facebook com esses aplicativos para que eles possam acessar sua linha do tempo e uma violação de dados acontecer com esses aplicativos, suas credenciais do Facebook também serão ameaçadas. Além disso, compartilhando sua senha, você está dando a esses aplicativos controle total de sua conta do Facebook em vez de acesso limitado. Para resolver esse desafio, foi definido um protocolo, chamado OAuth.
OAuth
OAuth é um protocolo/framework de autorização de padrão aberto que permite que os aplicativos obtenham acesso limitado às contas de usuários de outro aplicativo sem compartilhar uma senha. Esses aplicativos são fornecidos com um token de autorização que pode ser usado para usar serviços de outro aplicativo em seu nome sem comprometer sua senha. OAuth pode ser usado para autorizar aplicativos, APIs, dispositivos e servidores.
Em alto nível, é um processo de autorização delegado seguro e acesso limitado sobre HTTP em vez de usar suas credenciais que minimizam o risco de segurança. Se alguma falha de segurança acontecer e seus dados forem roubados do aplicativo que tem acesso ao seu Facebook, sua senha do Facebook será segura. Não se preocupe.
A OAuth tem duas versões – OAuth 1.0a e OAuth 2.0. Ambas as versões diferem completamente uma da outra em termos de especificações e não são compatíveis para serem usadas juntas. Mas a versão OAuth 2.0 é mais usada e vamos nos concentrar neste apenas enquanto nos referimos ao OAuth, a menos que seja mencionado explicitamente.
Atores e Fluxo
Há quatro atores, também chamados de papéis, em um fluxo de OAuth.
- Proprietário de recursos (Usuário) – o proprietário dos respectivos dados que residem no servidor de recursos. O proprietário do recurso autoriza o acesso à conta que se limita ao escopo da autorização concedida.
- Servidor de Recursos (API) – É onde a conta/recursos de usuário estão hospedados em um ambiente protegido.
- Cliente (Aplicativo) – o aplicativo que solicita acesso à conta do usuário.
- Servidor de Autorização (API) – O servidor de autorização realiza a verificação de identidade para emitir o token de acesso.
Esses atores interagem uns com os outros com base no protocolo OAuth. Por favor, note que o protocolo OAuth é sobre autorização, não autenticação. O fluxo geral de um protocolo OAuth é o seguinte:
- O cliente quer acessar o servidor de recursos e pede permissão ao usuário.
- O usuário autoriza a solicitação ou nega.
- Em caso de autorização, o cliente recebe uma autorização de autorização.
- O cliente, então, apresenta essa autorização e sua identidade ao servidor de autorização e solicita um token de acesso.
- Se o cliente tiver ambos, uma identidade válida e uma concessão de autorização, o servidor de autorização fornece-lhe um token de acesso.
- O cliente, então, vai ao servidor de recursos e solicita o acesso ao recurso apresentando o token de acesso a ele.
- O servidor de recursos fornece o acesso limitado permitido ao cliente somente se o token for válido.
Desafios no monitoramento de aplicativos habilitados para OAuth
A implementação do OAuth permite que seu aplicativo tenha acesso aos recursos do servidor em outros aplicativos com proteção de privacidade e ótima experiência do usuário. Mas, ao mesmo tempo, a OAuth coloca alguns desafios no monitoramento de sua aplicação. Vamos dar uma olhada nesses desafios.
Gestão de tokens – A implementação da OAuth requer a gestão de tokens com a gestão estadual. Isso significa que esses tokens são atualizados e girados. Se ocorrer um erro de autorização, torna-se difícil descobrir qual ator no protocolo OAuth é o culpado. Torna-se um pesadelo depuração.
Dependência de solicitação/resposta da OAuth – E se seu provedor OAuth mudou algo em seu mecanismo? Mesmo a menor mudança nos param de solicitação/resposta pode quebrar toda a sua aplicação. Pode levar um tempo até você descobrir se seus desenvolvedores não estão prestando atenção a novos lançamentos pelo seu provedor OAuth.
Retornos de chamadas – Dependendo da implementação, pode levar mais de uma chamada de API entre todos os atores para uma transação OAuth bem sucedida. Na maioria dos casos, o método de retornos de chamada é usado para conseguir isso, que pode ser complexo o suficiente para rastrear se alguma coisa se romper no meio. As ferramentas tradicionais de monitoramento não são suficientes para identificar erros de retorno de chamada, aumentar o tempo de depuração e, portanto, aumentar seu tempo de inatividade.
Configuração – Isso é importante para facilitar a vida da sua equipe DevOps. Se você estiver usando uma ferramenta de monitoramento que não se especialize em tarefas HTTP(S) altamente configuráveis, você terá dificuldade em monitorar os fluxos OAuth envolvendo expiração/renovação de token e várias chamadas de API sobre HTTP(s).
A solução para monitorar aplicativos habilitados para OAuth
O monitoramento sintético é uma excelente escolha quando lidamos com dependências de terceiros, HTTP(S), APIs REST, caminhos complexos do usuário e mecanismo de login personalizado como o OAuth, etc.
O monitoramento sintético funciona simulando comportamentos do usuário final com scripts personalizados, em um ambiente altamente configurável para suportar a flexibilidade da arquitetura e, em seguida, monitorando o tráfego e o fluxo de forma proativa. Isso ajuda na detecção e resolução de problemas antes que usuários reais os enfrentem. A plataforma Dotcom-Monitor utiliza uma ferramenta de scripting de ponto e clique, chamada EveryStep Web Recorder, para criar scripts que possam simular caminhos do usuário, bem como verificar o conteúdo que é devolvido como resposta a ações específicas. Para superar os desafios de monitoramento colocados pela implementação da OAuth, você precisará usar ferramentas especializadas de monitoramento sintético com os seguintes recursos imperdíveis:
Monitoramento de transações web em várias etapas – Como mencionamos brevemente, uma transação de sucesso da OAuth é um processo de várias etapas entre seus atores. O monitoramento sintético oferece a capacidade de configurar o monitoramento em várias etapas para transações OAuth e monitorá-las continuamente para disponibilidade e desempenho. O monitoramento multitarefa lhe dirá exatamente qual etapa é responsável pelo fluxo quebrado para que você seja capaz de corrigi-lo rapidamente.
Scripts personalizados com tarefas HTTP/S – A implementação real do OAuth difere de aplicativos para aplicativos, dependendo da arquitetura e políticas de segurança.
A ferramenta de monitoramento de serviços web sintéticos permite que você escreva tarefas HTTP(s) altamente configuráveis e scripts personalizados para caminhos complexos do usuário. Isso ajudará você a monitorar o fluxo de ponta a ponta da transação OAuth do seu aplicativo e a saúde geral das APIs e retornos de chamadas. Além disso, se você precisar verificar dados, como nomes de usuário, que são retornados como uma resposta, você pode configurar os scripts com o EveryStep Web Recorder para verificar essas palavras-chave específicas.
Além desses recursos, as ferramentas de monitoramento sintético são um ativo valioso para monitorar dependências de terceiros, serviços web e protocolos (protocolos SOAP, REST, TCP e ICMP), e infraestrutura. O Dotcom-Monitor permite configurar a transação em várias etapas para a API web baseada em OAuth usando a tarefa HTTP(s) e verificar continuamente o tempo de atividade, o desempenho e a funcionalidade 24 horas por dia, 7 de setembro.
Experimente a plataforma dotcom-monitor completa gratuitamente por 30 dias.