Saltar al contenido principal

Autenticación

El SDK de Retorna maneja automáticamente la autenticación usando OAuth2 y firmas digitales RSA para mayor seguridad.

Autenticación Automática​

El SDK gestiona automáticamente:

  • ✅ Obtención de tokens de acceso OAuth2
  • ✅ Renovación automática de tokens expirados
  • ✅ Reintentos en caso de errores 401/403
  • ✅ Firmas digitales RSA para cada solicitud

No necesitas manejar tokens manualmente. El SDK lo hace por ti.

Flujo de Autenticación​

  1. Inicialización: Al crear el RetornaClient, el SDK valida tus credenciales
  2. Primera Solicitud: Si no hay token, el SDK obtiene uno automáticamente
  3. Solicitudes Subsecuentes: El SDK usa el token existente
  4. Renovación: Si el token expira, el SDK obtiene uno nuevo automáticamente
  5. Firmas: Cada solicitud se firma digitalmente con tu llave privada RSA

Credenciales Requeridas​

Necesitas tres credenciales para autenticarte:

1. Client ID​

Identificador único de tu aplicación/cliente.

.clientId("tu-client-id")

2. Client Secret​

Secreto compartido para autenticación OAuth2.

.clientSecret("tu-client-secret")

3. Private Key (PEM)​

Llave privada RSA en formato PEM para firmas digitales.

.privateKey("-----BEGIN PRIVATE KEY-----\n" +
"MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC...\n" +
"-----END PRIVATE KEY-----")

Formato Requerido: La llave debe incluir los headers -----BEGIN PRIVATE KEY----- y -----END PRIVATE KEY-----.

Token Inicial Opcional​

Si ya tienes un token de acceso válido, puedes proporcionarlo al crear el cliente:

RetornaClient client = RetornaClient.create(
RetornaClientOptions.builder()
.environment(Environment.DEVELOP)
.clientId("tu-client-id")
.clientSecret("tu-client-secret")
.privateKey("tu-private-key")
.initialAccessToken("tu-token-existente")
.build()
);

El SDK usará este token hasta que expire, momento en el cual obtendrá uno nuevo automáticamente.

Firmas Digitales​

Cada solicitud HTTP se firma digitalmente usando tu llave privada RSA. Esto proporciona:

  • Autenticidad: Verifica que la solicitud viene de ti
  • Integridad: Asegura que la solicitud no ha sido modificada
  • No repudio: Prueba de que la solicitud fue enviada por ti

El SDK maneja esto automáticamente. No necesitas hacer nada adicional.

Manejo de Errores de Autenticación​

El SDK maneja automáticamente los siguientes errores:

401 Unauthorized​

Si recibes un 401, el SDK:

  1. Intenta obtener un nuevo token
  2. Reintenta la solicitud original
  3. Si falla nuevamente, lanza una excepción

403 Forbidden​

Si recibes un 403, el SDK:

  1. Verifica las credenciales
  2. Intenta renovar el token
  3. Si persiste, lanza una excepción

Credenciales Inválidas​

Si las credenciales son inválidas, recibirás una excepción al intentar hacer la primera solicitud:

try {
BalanceResponse balance = client.account.getBalance();
} catch (RuntimeException e) {
// Error de autenticación
System.err.println("Error: " + e.getMessage());
}

Seguridad de Credenciales​

✅ Buenas Prácticas​

  1. Variables de Entorno: Usa variables de entorno para credenciales
  2. No Committear: Nunca commitees credenciales en el código
  3. Rotación: Rota tus credenciales regularmente
  4. Permisos Mínimos: Usa credenciales con permisos mínimos necesarios

❌ Evitar​

  1. Hardcodeo: No hardcodees credenciales en el código
  2. Logs: No loguees credenciales
  3. Archivos Públicos: No guardes credenciales en archivos públicos
  4. Compartir: No compartas credenciales por canales inseguros

Ejemplo Completo​

import com.retorna.sdk.config.Environment;
import com.retorna.sdk.config.LoggingLevel;
import com.retorna.sdk.core.RetornaClient;
import com.retorna.sdk.core.RetornaClientOptions;
import com.retorna.sdk.account.BalanceResponse;

public class AuthExample {
public static void main(String[] args) {
// Crear cliente con autenticación automática
RetornaClient client = RetornaClient.create(
RetornaClientOptions.builder()
.environment(Environment.DEVELOP)
.loggingLevel(LoggingLevel.INFO)
.clientId(System.getenv("RETORNA_CLIENT_ID"))
.clientSecret(System.getenv("RETORNA_CLIENT_SECRET"))
.privateKey(System.getenv("RETORNA_PRIVATE_KEY"))
.build()
);

try {
// El SDK maneja automáticamente la autenticación
BalanceResponse balance = client.account.getBalance();
System.out.println("Balance: " + balance.getTotalBalance());
} catch (RuntimeException e) {
System.err.println("Error de autenticación: " + e.getMessage());
}
}
}

Debugging de Autenticación​

Para debuggear problemas de autenticación, activa el logging en nivel DEBUG:

.loggingLevel(LoggingLevel.DEBUG)

Esto mostrará:

  • Intentos de autenticación
  • Tokens obtenidos (sin mostrar el valor completo por seguridad)
  • Errores de autenticación
  • Reintentos automáticos

Siguiente Paso​

Ahora que entiendes la autenticación, consulta las Guías de Uso para aprender a usar las diferentes funcionalidades del SDK.

Envía dinero
Desde Latinoamérica
ChileColombiaPerú
Desde Europa
EspañaItaliaFranciaAlemaniaPortugalPaíses Bajos
Recursos
Blog
Encuéntranos en redes
Para denuncias, por favor contactar al correo electrónico [email protected]
Pertenecemos a la Unidad de Análisis Financiero (UAF).
Supervisados por
Registration number is C100000211.
Miembros de
Con el apoyo deCon el apoyo de
Copyright © Retorna Holding Spa 2024