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. 

