En DoiT, nuestra misión es ayudar a quienes usan la nube a gestionar sus workloads de forma eficiente, segura y con costos optimizados. Uno de los retos que enfrentan algunos clientes es la autenticación con las APIs de Google Workspace, sobre todo cuando la llamada a la API debe ejecutar una operación en nombre de un usuario sin requerir su interacción directa, un escenario conocido como flujo OAuth de 2 pasos (2-Legged OAuth).
Google ofrece tres métodos de autenticación para interactuar con sus APIs:
1. API Keys: sirven para acceder a información pública, como consultar la API de Google Air Quality y obtener datos sobre la calidad del aire.
2. Credenciales OAuth: se usan cuando una aplicación necesita el consentimiento del usuario para ejecutar llamadas a la API en su nombre, mediante un flujo OAuth de 3 pasos.
- Autenticación con cuenta de servicio: el tema que abordaremos hoy. Este método permite ejecutar acciones en nombre de los usuarios sin necesidad de su interacción y opera dentro de un flujo OAuth de 2 pasos.
Veamos un caso de uso práctico: obtener los eventos de calendario de un usuario dentro de nuestra organización de Workspace, como parte de una aplicación backend que analiza las agendas de los usuarios para determinar el horario óptimo de un evento.
Las API keys no sirven para esta tarea (no funcionan con APIs no públicas) y, aunque las credenciales OAuth sí podrían usarse, requieren el consentimiento del usuario. En cambio, la autenticación con cuenta de servicio permite acceder al endpoint de la API sin que el usuario participe; es el método que exploraremos a continuación.
Para implementar la autenticación con cuenta de servicio y autorizar el acceso a la API de Google Calendar en nombre de los usuarios, sigue estos pasos:
1. Crea una cuenta de servicio en Google Cloud.
2. Delega la autoridad a nivel de dominio (Domain-Wide Delegation) a la cuenta de servicio; esta tarea está reservada a los administradores de Google Workspace.
3. Autentícate con la API de Google Calendar usando las credenciales delegadas, un proceso también conocido como suplantación de usuario (user impersonation).
Aquí tienes un fragmento que muestra cómo inicializar el cliente de la API con credenciales delegadas en Python:
from __future__ import print_function
from googleapiclient.discovery import build
from google.oauth2.credentials import Credentials
from google.oauth2 import service_account
SCOPES = ['https://www.googleapis.com/auth/calendar']
SERVICE_ACCOUNT_FILE = 'credentials.json'
credentials = service_account.Credentials.from_service_account_file(
SERVICE_ACCOUNT_FILE, scopes=SCOPES)
def main():
delegated_credentials = credentials.with_subject('[email protected]')
service = build('calendar', 'v3', credentials=delegated_credentials)
events_results = service.calendars().events.list(calendarId='primary').execute()
events = events_result.get("items", [])
if not events:
print("No upcoming events found.")
return
for event in events:
start = event["start"].get("dateTime", event["start"].get("date"))
print(start, event["summary"])
if __name__ == '__main__':
main()
Es clave recordar que el cliente de la API debe inicializarse con las credenciales delegadas para cada usuario en cuyo nombre se harán las llamadas:
delegated_credentials = credentials.with_subject('[email protected]')
service = build('calendar', 'v3', credentials=delegated_credentials)
[email protected] es el usuario de Workspace en cuyo nombre se ejecutará la llamada a la API; en este caso, para acceder a su calendario.
Este enfoque difiere del método con credenciales OAuth, como se muestra en la guía de inicio rápido del cliente Python de la API de Calendar, que utiliza un flujo OAuth de 3 pasos y exige el consentimiento del usuario.
Nuestro objetivo es aclarar cómo funciona la autenticación backend con las APIs de Google Workspace, sobre todo en escenarios donde la interacción del usuario no debería formar parte del flujo. Esperamos que esta guía te ayude a despejar dudas. Te invitamos a conocer más sobre nuestras áreas de especialización en https://www.doit.com/services/
employed
Should be "deployed" I think :)
Responder
retrieving
"r" should be upper case.
Responder
El tema que abordaremos hoy. Este método permite ejecutar acciones en nombre de los usuarios sin necesidad de su interacción y opera dentro de un flujo OAuth de 2 pasos.
Formatting should not be bold letters.
Responder
Ver todas las respuestas
por
[Cómo modernizar el acceso a aplicaciones internas de GKE: de VPN a un gateway externo con IAP\ \
13 de enero de 2025
por
[Cómo construir arquitectura en AWS con servidores MCP y agentes Strands\ \
22 de septiembre de 2025
por
[Huellas digitales JA3 y JA4 en AWS WAF y más allá\ \
10 de abril de 2025
por
[Patrones de arquitectura VPC: enfoques standalone vs. centralizados en AWS y GCP\ \
25 de noviembre de 2024
por
[Stanford acaba de acabar con el prompt engineering con 8 palabras (y no puedo creer que haya funcionado)\ \
19 de octubre de 2025
[Un ícono de aplauso25K\ \
[10 habilidades imprescindibles para Claude (y cualquier agente de código) en 2026\ \
9 de marzo
[Un ícono de aplauso1K\ \
[El fin de los dashboards y los sistemas de diseño\ \
26 de noviembre de 2025
[Un ícono de aplauso6.5K\ \
[Anthropic suma el (nuevo) modo automático de Claude Code (se acabaron los modos de permisos)\ \
hace 6 días
[Un ícono de aplauso391\ \
por
[Seguramente estás comprando la máquina equivocada para IA local: la verdad sobre Mac Mini M4 vs Mini PC que nadie…\ \
20 de marzo
[Un ícono de aplauso1.1K\ \
por
[Dejé de usar ChatGPT durante 30 días. Lo que le pasó a mi cerebro fue aterrador.\