Autenticar en la API

En esta página, se explica cómo autorizar solicitudes a la API de Cloud Healthcare.

Obtén un archivo de claves de cuenta de servicio

A fin de crear una cuenta de servicio y descargar un archivo de claves:

Cloud Console

Crea una cuenta de servicio:

  1. En Cloud Console, ve a la página Crear cuenta de servicio.

    Ir a Crear cuenta de servicio
  2. Selecciona un proyecto
  3. Ingresa un nombre en el campo Nombre de cuenta de servicio. Cloud Console completa el campo ID de cuenta de servicio según este nombre.

    Opcional: en el campo Descripción de la cuenta de servicio, ingresa una descripción. Por ejemplo, Service account for quickstart.

  4. Haz clic en Crear y continuar.
  5. Haz clic en el campo Seleccionar una función.

    En Acceso rápido, haz clic en Básico y, luego, en Propietario.

  6. Haga clic en Continuar.
  7. Haz clic en Listo para terminar de crear la cuenta de servicio.

    No cierres la ventana del navegador. La usarás en la próxima tarea.

Para crear una clave de cuenta de servicio, haz lo siguiente:

  1. En Cloud Console, haz clic en la dirección de correo electrónico de la cuenta de servicio que creaste.
  2. Haga clic en Claves.
  3. Haz clic en Agregar clave, luego haz clic en Crear clave nueva.
  4. Haga clic en Crear. Se descargará un archivo de claves JSON en tu computadora.
  5. Haga clic en Cerrar.

Línea de comandos

Puedes ejecutar los siguientes comandos con el SDK de Cloud en tu máquina local o en Cloud Shell.

  1. Crea la cuenta de servicio. Reemplaza NAME por un nombre para la cuenta de servicio.

    gcloud iam service-accounts create NAME
  2. Otorga permisos a la cuenta de servicio. Reemplaza PROJECT_ID por el ID del proyecto.

    gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:NAME@PROJECT_ID.iam.gserviceaccount.com" --role="roles/owner"
  3. Genera el archivo de claves. Reemplaza FILE_NAME por un nombre para el archivo de claves.

    gcloud iam service-accounts keys create FILE_NAME.json --iam-account=NAME@PROJECT_ID.iam.gserviceaccount.com

Proporciona credenciales para tu aplicación

La API de Cloud Healthcare puede usar bibliotecas cliente de Google específicas para cada lenguaje a fin de autenticar aplicaciones y realizar llamadas a Google Cloud. Por ejemplo, mediante la biblioteca cliente de la API de Google para Python, puedes compilar un objeto de servicio mediante las credenciales y, luego, realizar llamadas a él.

Puedes proporcionar credenciales de forma automática o manual. Proporcionar credenciales de forma automática es útil cuando se ejecutan pruebas y experimentos, pero puede dificultar saber qué credenciales usa tu aplicación. Como alternativa, puedes proporcionar las credenciales de forma manual.

Configura las variables de entorno

Puedes proporcionar credenciales de autenticación al código o a los comandos de tu aplicación. Para ello, configura la variable de entorno GOOGLE_APPLICATION_CREDENTIALS en la ruta del archivo JSON que contiene la clave de tu cuenta de servicio.

Ten en cuenta que, si ejecutas tu aplicación en Compute Engine, Google Kubernetes Engine (GKE) o App Engine, solo necesitas configurar la variable de entorno GOOGLE_APPLICATION_CREDENTIALS si usas una cuenta de servicio distinta de la cuenta de servicio predeterminada que proporcionan esos servicios.

En los siguientes pasos se muestra cómo configurar la variable de entorno GOOGLE_APPLICATION_CREDENTIALS.

curl

Si usas curl, ejecuta el siguiente comando. Reemplaza PATH con la ruta de acceso del archivo JSON que contiene la clave de tu cuenta de servicio y FILE_NAME con el nombre del archivo. Esta variable solo se aplica a la sesión actual de shell. Por lo tanto, si abres una sesión nueva, deberás volver a configurar la variable.

export GOOGLE_APPLICATION_CREDENTIALS=PATH/FILE_NAME

Por ejemplo:

export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account.json"

PowerShell

Si usas Windows PowerShell, ejecuta el siguiente comando. Reemplaza PATH con la ruta de acceso del archivo JSON que contiene la clave de tu cuenta de servicio y FILE_NAME con el nombre del archivo. Esta variable solo se aplica a la sesión actual de shell. Por lo tanto, si abres una sesión nueva, deberás volver a configurar la variable.

$env:GOOGLE_APPLICATION_CREDENTIALS="PATH/FILE_NAME"

Por ejemplo:

$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service_account.json"

Después de configurar la variable de entorno GOOGLE_APPLICATION_CREDENTIALS, las credenciales predeterminadas de la aplicación (ADC) pueden determinar tus credenciales de forma implícita.

Encuentra credenciales automáticamente

Las bibliotecas cliente de la API de Google usan las credenciales predeterminadas de la aplicación (ADC) para encontrar las credenciales de la aplicación de forma automática.

Si tu código usa una biblioteca cliente, esta busca tus credenciales en el siguiente orden:

  1. ADC comprueba si se configuró la variable GOOGLE_APPLICATION_CREDENTIALS de entorno. Si está configurada, ADC usa el archivo de cuenta de servicio al que hace referencia la variable. En Configura variables de entorno, se describe cómo configurar la variable de entorno.
  2. Si no se configura la variable de entorno, ADC usa la cuenta de servicio predeterminada que proporcionan Compute Engine, Google Kubernetes Engine (GKE) o App Engine, si tu aplicación se ejecuta en alguno de esos servicios.

Se mostrará un error si ADC no puede usar ninguna de las credenciales ya mencionadas.

En el siguiente ejemplo de código, se muestra el uso de ADC. El ejemplo no especifica las credenciales de la aplicación de forma explícita. Sin embargo, ADC puede encontrar las credenciales de forma implícita y almacenarlas en la variable auth, siempre y cuando la variable de entorno GOOGLE_APPLICATION_CREDENTIALS esté configurada, o siempre que la aplicación se ejecute en Compute Engine, GKE o App Engine.

Node.js

Usa la biblioteca cliente de Node.js.

const google = require('@googleapis/healthcare');
const healthcare = google.healthcare({
  version: 'v1',
  auth: new google.auth.GoogleAuth({
    scopes: ['https://www.googleapis.com/auth/cloud-platform'],
  }),
});

const createDataset = async () => {
  // TODO(developer): uncomment these lines before running the sample
  // const cloudRegion = 'us-central1';
  // const projectId = 'adjective-noun-123';
  // const datasetId = 'my-dataset';
  const parent = `projects/${projectId}/locations/${cloudRegion}`;
  const request = {parent, datasetId};

  await healthcare.projects.locations.datasets.create(request);
  console.log(`Created dataset: ${datasetId}`);
};

createDataset();

Obtén y proporciona credenciales de la cuenta de servicio de forma manual

Puedes crear y obtener credenciales de cuentas de servicio de forma manual y, luego, pasar las credenciales a tu aplicación en su código. Para obtener más información, consulta Obtén y proporciona credenciales de cuenta de servicio de forma manual.

Autorización de cuenta de servicio con tokens web JSON (JWT)

Puedes realizar llamadas autorizadas a la API de Cloud Healthcare que no usan OAuth 2.0. Para ello, usa un token web JSON (JWT) firmado directamente como un token del portador, en lugar de un token de acceso de OAuth 2.0. La API de Cloud Healthcare no requiere un método de generación de tokens específico. Puedes encontrar una colección de bibliotecas cliente de ayuda en JWT.io. Cuando usas un JWT firmado, puedes evitar tener que realizar una solicitud de red al servidor de autorización de Google antes de realizar una llamada a la API.

Cuando uses un JWT, especifica https://healthcare.googleapis.com/ en el campo aud.

Para autorizar llamadas a la API de Cloud Healthcare con un JWT en lugar de un token de acceso, completa las instrucciones en Anexo: Autorización de cuenta de servicio sin OAuth.

El JWT que crees debe ser similar al siguiente ejemplo:

   {
     "alg": "RS256",
     "typ": "JWT",
     "kid": "PRIVATE_KEY_ID"
   }
   .
   {
     "iss": "SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com",
     "sub": "SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com",
     "aud": "https://healthcare.googleapis.com/",
     "iat": CURRENT_UNIX_TIME,
     "exp": EXPIRATION_TIME
   }
   

¿Qué sigue?