OAuth 2.0 e autorização JWT em Kotlin: Guia completo

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 Kotlin

Aplicações web modernas e serviços móveis exigem um sistema robusto e seguro de autenticação e autorização. Dois dos padrões mais populares nesta área são OAuth 2.0 e JWT (JSON Web Token). Neste artigo, vamos detalhar como implementar a autorização OAuth 2.0 e JWT na linguagem Kotlin usando o framework Spring Boot. Você aprenderá como configurar um servidor de autorização, gerar e validar tokens, além de proteger seus endpoints de API.



Fundamentos de OAuth 2.0 e JWT



O que é OAuth 2.0?

OAuth 2.0 é um protocolo de autorização que permite que aplicativos de terceiros obtenham acesso limitado aos recursos de um usuário sem transmitir suas credenciais (login e senha). Em vez disso, utiliza-se um token de acesso, emitido após a autenticação bem-sucedida. Os principais participantes do OAuth 2.0 são:

  • Resource Owner (proprietário do recurso) — o usuário.
  • Client (cliente) — o aplicativo que solicita o acesso.
  • Authorization Server — o servidor que emite os tokens.
  • Resource Server — o servidor que fornece os dados protegidos.


O que é JWT?

JWT (JSON Web Token) é um formato de token compacto e autossuficiente que contém informações sobre o usuário (claims) na forma de um objeto JSON. O token é assinado usando uma chave secreta ou criptografia assimétrica, garantindo sua integridade. A estrutura do JWT consiste em três partes, separadas por pontos:

  • Header — cabeçalho contendo o tipo do token e o algoritmo de assinatura.
  • Payload — carga útil com os dados (ex.: userId, role, exp).
  • Signature — assinatura criada com base no header e no payload.

Exemplo de JWT: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIn0.ZL1mK9WpXoQ



Configuração do Projeto Kotlin com Spring Security



Adicionando Dependências

Para começar, vamos criar um novo projeto Spring Boot em Kotlin. No arquivo build.gradle.kts, adicione as seguintes dependências:

dependencies {    implementation("org.springframework.boot:spring-boot-starter-web")    implementation("org.springframework.boot:spring-boot-starter-security")    implementation("org.springframework.boot:spring-boot-starter-data-jpa")    implementation("io.jsonwebtoken:jjwt-api:0.11.5")    runtimeOnly("io.jsonwebtoken:jjwt-impl:0.11.5")    runtimeOnly("io.jsonwebtoken:jjwt-jackson:0.11.5")    implementation("com.h2database:h2")}

Estamos usando a biblioteca jjwt para trabalhar com JWT e H2 como banco de dados para testes.



Configuração de Segurança

Vamos criar a classe SecurityConfig, que configurará o Spring Security e desabilitará o formulário de login padrão:

@Configuration@EnableWebSecurityclass SecurityConfig(private val jwtAuthFilter: JwtAuthFilter) {

@Bean fun securityFilterChain(http: HttpSecurity): SecurityFilterChain { http .csrf { it.disable() } .authorizeHttpRequests { auth -> auth.requestMatchers("/api/auth/**").permitAll() .anyRequest().authenticated() } .sessionManagement { it.sessionCreationPolicy(SessionCreationPolicy.STATELESS) } .addFilterBefore(jwtAuthFilter, UsernamePasswordAuthenticationFilter::class.java) return http.build() }}

Permitimos acesso aos endpoints /api/auth/** sem autenticação, enquanto todas as outras requisições exigem um token JWT.



Implementação de OAuth 2.0 e JWT em Kotlin



Geração e Validação de Token JWT

Vamos criar o serviço JwtService, que será responsável por criar e

Blogs

Book Recommendations