OAuth 2.0 e autorização JWT em Java: guia 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 ao OAuth 2.0 e JWT em Java

Aplicações web e APIs modernas exigem mecanismos robustos de autenticação e autorização. Os dois padrões mais populares nesta área são OAuth 2.0 e JWT (JSON Web Tokens). Se você é um desenvolvedor Java iniciante, entender essas tecnologias abrirá caminho para criar aplicações seguras e escaláveis.

Neste artigo, vamos explorar o que são OAuth 2.0 e JWT, como eles funcionam juntos e como implementá-los em Java usando bibliotecas populares. Você aprenderá a configurar um servidor de autorização, gerar e validar tokens JWT, além de proteger suas APIs REST.



O que são OAuth 2.0 e JWT?



OAuth 2.0 — protocolo de acesso delegado

OAuth 2.0 é um protocolo de autorização que permite que aplicações obtenham acesso limitado aos recursos de um usuário sem compartilhar suas credenciais. Imagine que você queira dar a uma aplicação acesso às suas fotos no Google. Em vez de informar sua senha do Google para a aplicação, você usa OAuth 2.0, que emite um token temporário com direitos limitados para a aplicação.

Principais participantes do OAuth 2.0:

  • Resource Owner — o usuário proprietário dos recursos
  • Client — a aplicação que solicita acesso
  • Authorization Server — o servidor que emite os tokens
  • Resource Server — o servidor que fornece os recursos protegidos


JWT — formato compacto de token

JWT (JSON Web Token) é um padrão aberto (RFC 7519) para criar tokens de acesso que contêm declarações (claims) no formato JSON. O JWT consiste em três partes separadas por pontos:

  • Header — contém o tipo do token e o algoritmo de assinatura (ex.: HS256 ou RS256)
  • Payload — contém as declarações (ex.: ID do usuário, papéis, data de expiração)
  • Signature — assinatura que garante a integridade do token

Exemplo de JWT: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.dozjgNryP4J3jVmNHl0w5N_XgL0n3I9PlFUP0THsR8U



Implementação de OAuth 2.0 e JWT em Java



Configuração do projeto com Spring Security

Para implementar OAuth 2.0 e JWT em Java, usaremos Spring Boot e Spring Security. Vamos começar adicionando as dependências no arquivo pom.xml:

<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-security</artifactId></dependency><dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-web</artifactId></dependency><dependency>    <groupId>io.jsonwebtoken</groupId>    <artifactId>jjwt-api</artifactId>    <version>0.12.3</version></dependency><dependency>    <groupId>io.jsonwebtoken</groupId>    <artifactId>jjwt-impl</artifactId>    <version>0.12.3</version>    <scope>runtime</scope></dependency><dependency>    <groupId>io.jsonwebtoken</groupId>    <artifactId>jjwt-jackson</artifactId>    <version>0.12.3</version>    <scope>runtime</scope></dependency>


Criação do provedor JWT

Vamos criar a classe JwtProvider, que será responsável pela geração e validação de tokens JWT:

import io.jsonwebtoken.*;import io.jsonwebtoken.security.Keys;import org.springframework.stereotype.Component;

import javax.crypto.SecretKey;import java.util.Date;

@Componentpublic class JwtProvider { private final SecretKey secretKey = Keys.secretKeyFor(SignatureAlgorithm.HS256); private final

Blogs

Book Recommendations