Cliente OAuth para Java: visão geral das bibliotecas e exemplos de código

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: como escolher e usar

\n\n

OAuth (Open Authorization) é um protocolo aberto que permite conceder a terceiros (por exemplo, sua aplicação Java) acesso limitado aos recursos do usuário sem transmitir seu login e senha. No desenvolvimento web moderno, o OAuth 2.0 é o padrão de facto para autorização através de redes sociais (Google, Facebook, VK) e sistemas corporativos (Microsoft, GitHub).

\n\n

Para Java, existem várias bibliotecas maduras que implementam tanto o papel de cliente OAuth quanto o de servidor. Neste artigo, veremos três soluções mais populares: ScribeJava, Spring Security OAuth e Google OAuth Client Library for Java. Você aprenderá como integrá-las ao seu projeto, escrever uma integração básica e escolher a ferramenta adequada para suas tarefas.

\n\n

1. ScribeJava — cliente OAuth leve

\n\n

ScribeJava é uma biblioteca simples e leve que suporta OAuth 1.0a e OAuth 2.0. É ideal para aplicações standalone ou microsserviços onde não é necessário o stack completo do Spring.

\n\n

Integração (Maven)

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

Exemplo: login com Google

\n
import com.github.scribejava.apis.GoogleApi20;\nimport com.github.scribejava.core.builder.ServiceBuilder;\nimport com.github.scribejava.core.model.*;\nimport com.github.scribejava.core.oauth.OAuth20Service;\n\npublic class GoogleOAuthExample {\n    public static void main(String[] args) throws Exception {\n        String clientId = "SEU_CLIENT_ID";\n        String clientSecret = "SEU_CLIENT_SECRET";\n        String callbackUrl = "http://localhost:8080/callback";\n\n        OAuth20Service service = new ServiceBuilder(clientId)\n                .apiSecret(clientSecret)\n                .callback(callbackUrl)\n                .scope("email profile")\n                .build(GoogleApi20.instance());\n\n        // Obtém a URL para redirecionamento do usuário\n        String authorizationUrl = service.getAuthorizationUrl();\n        System.out.println("Abra no navegador: " + authorizationUrl);\n\n        // Após o redirecionamento, obtém o código de autorização (em uma aplicação real, do QueryString)\n        String code = "CODIGO_DO_REDIRECIONAMENTO";\n\n        // Troca o código pelo token\n        OAuth2AccessToken accessToken = service.getAccessToken(code);\n        System.out.println("Access Token: " + accessToken.getAccessToken());\n\n        // Usa o token para solicitar dados do usuário\n        OAuthRequest request = new OAuthRequest(Verb.GET, "https://www.googleapis.com/oauth2/v2/userinfo");\n        service.signRequest(accessToken, request);\n        Response response = service.execute(request);\n        System.out.println("Resposta da API: " + response.getBody());\n    }\n}
\n\n

Vantagens do ScribeJava:

\n
    \n
  • Mínimo de dependências (apenas OkHttp ou URLConnection).
  • \n
  • Suporte a dezenas de provedores prontos para uso (Google, Facebook, GitHub, VK e outros).
  • \n
  • API simples sem abstrações complicadas.
  • \n
\n\n

2. Spring Security OAuth — para projetos com Spring Boot

\n\n

Se você usa Spring Boot, o Spring Security OAuth (módulo spring-security-oauth2-client) é a escolha mais natural. Ele se integra completamente com a cadeia de segurança e permite configurar provedores através do application.yml.

\n\n

Integração (Gradle)

\n
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
\n\n

Exemplo de configuração (application.yml)

\n
spring:\n  security:\n    oauth2:\n      client:\n        registration:\n                    

Recommendations