Cliente OAuth para Java: ScribeJava e Spring Security OAuth2

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

Cliente OAuth para Java: ScribeJava e Spring Security OAuth2



No desenvolvimento web moderno, a integração com serviços externos através do protocolo OAuth 2.0 tornou-se o padrão de facto. Seja para login via Google, GitHub, Facebook ou acesso a APIs de plataformas terceiras — o desenvolvedor Java precisa de uma ferramenta confiável para trabalhar com OAuth. Neste artigo, abordaremos detalhadamente duas bibliotecas principais: ScribeJava (leve e versátil) e Spring Security OAuth2 (parte do ecossistema Spring). Você aprenderá como escolher a ferramenta adequada e implementar um cliente OAuth em Java.



O que é um cliente OAuth e para que serve?

Um cliente OAuth é um componente de software que permite que sua aplicação (cliente) acesse com segurança os recursos do usuário em um servidor terceiro (provedor) sem transmitir a senha. Em vez disso, utiliza-se a troca de tokens de acesso. Em Java, isso é implementado através de bibliotecas especializadas que lidam com toda a complexidade do protocolo: geração da URL de autorização, processamento do callback, obtenção e renovação de tokens.



1. ScribeJava — Cliente OAuth leve e independente

ScribeJava (anteriormente Scribe) é uma biblioteca minimalista, porém poderosa, para OAuth 1.0a e OAuth 2.0. Ela não está vinculada a frameworks, o que a torna ideal para microsserviços, aplicações Java comuns ou Android. Principais vantagens:

  • Suporte a dezenas de provedores "prontos para uso" (Google, Facebook, GitHub, VK, Yandex e outros)
  • API simples e intuitiva
  • Sem dependências desnecessárias
  • Suporte a PKCE (Proof Key for Code Exchange) para clientes públicos


Exemplo: Autorização via GitHub com ScribeJava

Vamos considerar um cenário básico — obter um access token do GitHub. Primeiro, adicione a dependência no pom.xml:



<dependency>    <groupId>com.github.scribejava</groupId>    <artifactId>scribejava-apis</artifactId>    <version>8.3.3</version></dependency>


Agora, o código do cliente OAuth:



import com.github.scribejava.apis.GitHubApi;import com.github.scribejava.core.builder.ServiceBuilder;import com.github.scribejava.core.model.OAuth2AccessToken;import com.github.scribejava.core.model.OAuthRequest;import com.github.scribejava.core.model.Response;import com.github.scribejava.core.model.Verb;import com.github.scribejava.core.oauth.OAuth20Service;

public class GitHubOAuthExample { public static void main(String[] args) throws Exception { final String clientId = "seu_client_id"; final String clientSecret = "seu_client_secret"; final String callbackUrl = "http://localhost:8080/callback";

// Criando o serviço OAuth 2.0 OAuth20Service service = new ServiceBuilder(clientId) .apiSecret(clientSecret) .callback(callbackUrl) .scope("user:email") // solicitando acesso ao email .build(GitHubApi.instance());

// Passo 1: Obter a URL para redirecionar o usuário final String authorizationUrl = service.getAuthorizationUrl(); System.out.println("Acesse o link para autorização: " + authorizationUrl);

// Passo 2: Após o redirecionamento, extrair o código do callback // (normalmente isso é feito em um controller, aqui como exemplo — entrada pelo console) System.out.print("Digite o código do callback: "); java.util.Scanner scanner = new java.util.Scanner(System.in); String code = scanner.nextLine();

// Passo 3: Trocar o código pelo access token OAuth2AccessToken accessToken = service.getAccessToken(code); System.out.println("Access Token: " + accessToken.getAccessToken());

// Passo 4: Usar o token para fazer uma requisição à API OAuthRequest request = new OAuthRequest(Verb.GET, "https://api.g

Recommendations