Token, para que te quero?

Um token é uma string de dados que representa um direito ou permissão de acesso, em sistemas de software.

É frequentemente usado na autenticação e autorização de sistemas, de APIs, e de plataformas web. Quando um utilizador ou serviço se autentica com sucesso, o sistema emite um token que pode ser utilizado para aceder a recursos específicos, sem existir a necessidade de repetição da autenticação frequente e constante.

Os tokens são vastamente utilizados em sistemas distribuídos e baseados na web, como substitutos de credenciais, como passwords/senhas. A utilização de tokens torna o acesso mais seguro e eficiente, pois estes podem ser temporários, com duração limitada e restrições específicas. Depende dos objectivos e utilização.

Tipos de Tokens

Os principais tipos de tokens incluem:

  • Bearer Tokens: maioritariamente utilizados em APIs RESTful. O cliente recebe um token quando o seu user é criado no sistema, que deve ser depois enviado em cada Request para autenticação. Este token pode ser fixo ou gerado a cada utilização.

  • JWT (JSON Web Token): Este é outro tipo de token muito popular para autenticação de APIs. É compacto, auto-contido e contém informação sobre o utilizador, como claims (informações codificadas), assinaturas digitais e duração do token.

  • OAuth Tokens: Utilizado em sistemas OAuth para autorização, por norma há dois tipos:

    • Access Tokens: Utilizados para aceder a recursos protegidos.

    • Refresh Tokens: Utilizados para obter novos access tokens sem a necessidade de re-autenticação.

  • ID Tokens: Faz parte do protocolo OpenID Connect e este token contém informações de identidade do utilizador autenticado.

Como e Quando pode um QA Usar Tokens?

Um QA pode utilizar tokens aquando dos testes a sistemas que requerem autenticação e autorização. A utilização de tokens é essencial nos testes de segurança, nos testes de validação de acesso a APIs, e também para simular diferentes cenários de permissão.

Alguns cenários típicos:

  • API: Ao testar APIs que requerem autenticação, um QA deve usar tokens para aceder a endpoints protegidos, o que inclui testar a validade dos tokens, verificar o comportamento dos tokens expirados ou inválidos, e também validar se os diferentes níveis de acesso são devidamente respeitados.

  • Segurança: Um QA pode usar tokens para testar várias vulnerabilidades, como a tentativa de reutilização de tokens expirados (replay attacks) ou então verificar se os tokens são devidamente protegidos (por exemplo, são armazenados de forma segura no frontend), entre outros.

  • Fluxos de Autenticação: Em sistemas que implementam OAuth ou OpenID Connect, o QA deve testar o ciclo completo de geração, utilização, e expiração dos tokens.

Ferramentas Mais Frequentes que Pedem Tokens

São diversas as ferramentas que recorrem ao uso de tokens para testar APIs e/ou autenticar em sistemas.

Algumas das mais comuns são:

  • Postman: utilizado para testes de APIs, permite a inserção e gestão de tokens em Requests.

  • SoapUI: usado para testar APIs SOAP e REST, oferece suporte para autenticação via tokens.

  • JMeter, ferramenta de teste de carga, que pode ser configurada para enviar tokens em Requests.

  • Cypress, que pode ser configurado para utilizar tokens JWT para autenticação em testes end-to-end.

  • Insomnia, é outra ferramenta popular para testes de APIs, com suporte para autenticação baseada em tokens.

Principais Benefícios de Usar Tokens

Segurança Reforçada

  • Os tokens permitem que que dados de acesso/credenciais sensíveis, como senhas, não sejam transmitidos de forma repetida. Para além disso, podem ser configurados com duração limitada e restrições específicas.

Escalabilidade

  • Em sistemas distribuídos, a utilização de tokens facilita a comunicação segura entre microserviços, sem a necessidade de autenticações contínuas.

Flexibilidade

  • Os tokens podem ser usados em diversos dispositivos e contextos, facilitando assim a interoperabilidade entre diferentes plataformas e aplicações.

Principais Dificuldades de Usar e Testar Tokens

Gestão de Validade

  • Testar fluxos de validade e renovação de tokens (como refresh tokens) pode ser complicado, principalmente em ambientes com múltiplos pontos de falha.

Segurança dos Tokens

  • Garantir que os tokens estão adequadamente protegidos é um desafio importante, pois tokens expostos podem ser utilizados para ataques de replay ou session hijacking.

Integração Complexa

  • Testar sistemas com autenticação distribuída pode ser complexo, principalmente quando diferentes sistemas precisam partilhar entre si tokens e informações, como a identidade do utilizador.

Principais Fornecedores de Soluções de Tokens

  • Auth0: Plataforma que fornece autenticação e autorização como serviço.

  • Okta: Serviço que oferece soluções de identidade e segurança, incluindo autenticação baseada em tokens.

  • AWS Cognito: Serviço da Amazon que oferece autenticação e gestão de utilizadores.

  • Google Identity Platform: Oferece serviços de autenticação e autorização, suportando tokens OAuth e OpenID Connect.

Portanto, os tokens são cruciais para os sistemas modernos de autenticação e autorização, e a sua correta utilização (e respectivos testes) são fundamentais para garantir a segurança e funcionalidade de aplicações.

Como Aprender Mais sobre Tokens?

Para aprender mais sobre tokens…

  • Estudar Autenticação e Autorização em APIs

    • Entender como funcionam os protocolos de autenticação, como OAuth2, OpenID Connect, e JWT. Existem já muitos tutoriais na net, bem como a documentação oficial para essas tecnologias.

      • Documentação do OAuth2 e OpenID Connect

        • São boas fontes de informação para entender como os tokens funcionam em cenários de autenticação moderna.

      • JWT.io

        • Oferece-nos uma explicação interativa de como os tokens JWT funcionam e permite-nos explorar as diferentes partes do token.

  • Praticar com ferramentas, como Postman ou Insomnia, configurando Pedidos/Requests de APIs que requeiram autenticação baseada em tokens e explora diferentes cenários, como o tempo de vida dos tokens, a manipulação de tokens inválidos, etc.

  • Cursos e Tutoriais existem em plataformas de cursos como Udemy, Coursera, e Pluralsight, e existem muitos conteúdos sobre segurança de APIs, onde a utilização de tokens é abordada em detalhes.

 
Anterior
Anterior

Service Level Agreement

Próximo
Próximo

Gorilla vs Performance Tests