OAuth 2.0 e autorização JWT em PHP: guia completo para iniciantes

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução: por que OAuth 2.0 e JWT são necessários em aplicações web modernas?



No desenvolvimento web moderno, a transmissão segura de dados entre cliente e servidor é uma das tarefas principais. Métodos tradicionais de autenticação, como sessões baseadas em cookies, funcionam bem para aplicações monolíticas, mas tornam-se inconvenientes ao criar REST APIs, aplicações móveis ou arquitetura de microsserviços. É aqui que duas ferramentas poderosas vêm em socorro: o protocolo OAuth 2.0 e o formato de token JWT (JSON Web Token).



Neste artigo, vamos abordar os conceitos básicos de OAuth 2.0 e JWT e, em seguida, criar passo a passo um sistema simples de autorização em PHP. O artigo é voltado para desenvolvedores iniciantes, portanto, todas as explicações serão o mais simples possível e acompanhadas de exemplos práticos de código.



O que é OAuth 2.0 e como funciona?



OAuth 2.0 é um protocolo de autorização que permite que aplicações obtenham acesso limitado aos recursos de um usuário sem transmitir seu login e senha. Imagine que você queira entrar em um site usando sua conta do Google ou Facebook — isso é o funcionamento do OAuth 2.0.



Papéis principais no OAuth 2.0

  • Resource Owner (Proprietário do recurso) — o usuário que possui os dados.
  • Client (Cliente) — a aplicação que deseja acessar os dados do usuário.
  • Authorization Server (Servidor de autorização) — o servidor que emite tokens após autenticação bem-sucedida.
  • Resource Server (Servidor de recursos) — o servidor que armazena dados protegidos e verifica tokens.


Fluxo de autorização (Authorization Code Grant)

O fluxo OAuth 2.0 mais comum e seguro é o seguinte:

  1. O cliente redireciona o usuário para o servidor de autorização.
  2. O usuário faz login e concede permissão.
  3. O servidor de autorização retorna um authorization code para o cliente.
  4. O cliente troca o código por um access token (token de acesso).
  5. Usando o access token, o cliente acessa o servidor de recursos.


O que é JWT e por que é tão popular?



JWT (JSON Web Token) é um formato de token compacto e autossuficiente usado para transmitir informações entre partes na forma de um objeto JSON. As informações no JWT podem ser verificadas e são confiáveis, pois o token é assinado digitalmente.



Estrutura do JWT

O JWT consiste em três partes separadas por pontos:

header.payload.signature
  • Header (Cabeçalho) — contém o tipo de token (JWT) e o algoritmo de assinatura (por exemplo, HS256 ou RS256).
  • Payload (Carga útil) — contém os dados (claims), como identificador do usuário, função, tempo de criação e expiração do token.
  • Signature (Assinatura) — criada criptografando o cabeçalho e a carga útil usando uma chave secreta.


Vantagens do JWT

  • Autossuficiência — todas as informações necessárias são armazenadas dentro do token, reduzindo a carga no banco de dados.
  • Segurança — o token é assinado, portanto não pode ser falsificado.
  • Versatilidade — funciona com qualquer linguagem de programação e plataforma.
  • Escalabilidade — ideal para microsserviços e sistemas distribuídos.


Implementação prática: criando um sistema de autorização em PHP



Agora vamos para a parte mais interessante — escrever o código. Criaremos um script PHP simples que gera um token JWT e o verifica a cada requisição. Para trabalhar com JWT, usaremos a biblioteca firebase/php-jwt.



Blogs

Book Recommendations