Cliente OAuth para Java: como escolher e usar
\n\nOAuth (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\nPara 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\n1. ScribeJava — cliente OAuth leve
\n\nScribeJava é 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\nIntegração (Maven)
\n<dependency>\n <groupId>com.github.scribejava</groupId>\n <artifactId>scribejava-apis</artifactId>\n <version>8.3.3</version>\n</dependency>\n\nExemplo: login com Google
\nimport 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\nVantagens 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
2. Spring Security OAuth — para projetos com Spring Boot
\n\nSe 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.
Integração (Gradle)
\nimplementation 'org.springframework.boot:spring-boot-starter-oauth2-client'\n\nExemplo de configuração (application.yml)
\nspring:\n security:\n oauth2:\n client:\n registration:\n Também na biblioteca
Trabalhando com S3 e armazenamentos em nuvem em TypeScript: bibliotecas e exemplos
Geração de PDF em Swift (iOS/macOS): visão geral das ferramentas e exemplos
Parsing HTML em Swift (iOS/macOS): bibliotecas SwiftSoup e Fuzi
Trabalhando com YAML em Rust: biblioteca serde_yaml
Biblioteca Padrão Java (Java Standard Library)