Cliente OAuth para Java: resumen de bibliotecas y ejemplos de código

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Cliente OAuth para Java: cómo elegir y usar

\n\n

OAuth (Open Authorization) es un protocolo abierto que permite otorgar a un tercero (por ejemplo, su aplicación Java) acceso limitado a los recursos de un usuario sin compartir su nombre de usuario y contraseña. En el desarrollo web moderno, OAuth 2.0 es el estándar de facto para la autorización a través de redes sociales (Google, Facebook, VK) y sistemas corporativos (Microsoft, GitHub).

\n\n

Para Java existen varias bibliotecas maduras que implementan tanto el rol de cliente OAuth como el de servidor. En este artículo, analizaremos las tres soluciones más populares: ScribeJava, Spring Security OAuth y Google OAuth Client Library for Java. Aprenderá cómo integrarlas en su proyecto, escribir una integración básica y elegir la herramienta adecuada para sus necesidades.

\n\n

1. ScribeJava — Cliente OAuth ligero

\n\n

ScribeJava es una biblioteca simple y ligera que admite OAuth 1.0a y OAuth 2.0. Es ideal para aplicaciones independientes o microservicios donde no se requiere el stack completo de Spring.

\n\n

Integración (Maven)

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

Ejemplo: inicio de sesión con 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 = "SU_CLIENT_ID";\n        String clientSecret = "SU_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        // Obtener la URL para redirigir al usuario\n        String authorizationUrl = service.getAuthorizationUrl();\n        System.out.println("Abra en el navegador: " + authorizationUrl);\n\n        // Después de la redirección, obtener el código de autorización (en una aplicación real, desde QueryString)\n        String code = "CÓDIGO_DE_REDIRECCIÓN";\n\n        // Intercambiar el código por un token\n        OAuth2AccessToken accessToken = service.getAccessToken(code);\n        System.out.println("Access Token: " + accessToken.getAccessToken());\n\n        // Usar el token para solicitar datos del usuario\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("Respuesta de la API: " + response.getBody());\n    }\n}
\n\n

Ventajas de ScribeJava:

\n
    \n
  • Mínimas dependencias (solo OkHttp o URLConnection).
  • \n
  • Soporte para decenas de proveedores listos para usar (Google, Facebook, GitHub, VK, etc.).
  • \n
  • API simple sin abstracciones complejas.
  • \n
\n\n

2. Spring Security OAuth — para proyectos con Spring Boot

\n\n

Si usa Spring Boot, Spring Security OAuth (módulo spring-security-oauth2-client) es la opción más natural. Se integra completamente con la cadena de seguridad y permite configurar proveedores a través de application.yml.

\n\n

Integración (Gradle)

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

Ejemplo de configuración (application.yml)

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

Recommendations