S'authentifier dans l'API

Cette page explique comment autoriser des requêtes à accéder à l'API Cloud Healthcare.

Obtenir un fichier de clé de compte de service

Pour créer un compte de service et télécharger un fichier de clé, procédez comme suit :

Cloud Console

Créez un compte de service :

  1. Dans Cloud Console, accédez à la page Créer un compte de service.

    Accéder à la page "Créer un compte de service"
  2. Sélectionnez un projet.
  3. Dans le champ Nom du compte de service, saisissez un nom. Cloud Console remplit le champ ID du compte de service en fonction de ce nom.

    Dans le champ Description du compte de service, saisissez une description. Exemple : Service account for quickstart.

  4. Cliquez sur Créer et continuer.
  5. Cliquez sur le champ Sélectionner un rôle.

    Dans la section Accès rapide, cliquez sur Basique, puis sur Propriétaire.

  6. Cliquez sur Continuer.
  7. Cliquez sur OK pour terminer la création du compte de service.

    Ne fermez pas la fenêtre de votre navigateur. Vous en aurez besoin lors de la tâche suivante.

Créez une clé de compte de service :

  1. Dans Cloud Console, cliquez sur l'adresse e-mail du compte de service que vous avez créé.
  2. Cliquez sur Clés.
  3. Cliquez sur Add key (Ajouter une clé), puis sur Create new key (Créer une clé).
  4. Cliquez sur Create (Créer). Un fichier de clé JSON est téléchargé sur votre ordinateur.
  5. Cliquez sur Close (Fermer).

Ligne de commande

Vous pouvez exécuter les commandes suivantes à l'aide du SDK Cloud sur votre ordinateur local, ou dans Cloud Shell.

  1. Créez le compte de service. Remplacez NAME par le nom que vous souhaitez donner au compte de service.

    gcloud iam service-accounts create NAME
  2. Accordez des autorisations au compte de service. Remplacez PROJECT_ID par votre ID de projet.

    gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:NAME@PROJECT_ID.iam.gserviceaccount.com" --role="roles/owner"
  3. Générez le fichier de clé. Remplacez FILE_NAME par le nom du fichier de clé.

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

Fournir des identifiants à votre application

L'API Cloud Healthcare peut utiliser les bibliothèques clientes Google spécifiques à chaque langage pour authentifier les applications et effectuer des appels vers Google Cloud. Par exemple, à l'aide de la bibliothèque cliente des API Google pour Python, vous pouvez créer un objet de service à l'aide de vos identifiants, puis l'appeler.

Vous pouvez fournir les identifiants automatiquement ou manuellement. Cette stratégie est utile lors des tests et des expérimentations, mais peut vous empêcher de déterminer les identifiants utilisés par votre application. Vous pouvez également les fournir manuellement.

Définir les variables d'environnement

Vous pouvez fournir des identifiants d'authentification au code ou aux commandes de votre application en définissant la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS sur le chemin du fichier JSON contenant votre clé de compte de service.

Notez que si vous exécutez votre application sur Compute Engine, Google Kubernetes Engine (GKE) ou App Engine, vous ne devez définir la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS que si vous utilisez un compte de service autre que le compte de service par défaut ces services fournissent.

Les exemples suivants montrent comment définir la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS :

curl

Si vous utilisez curl, exécutez la commande suivante. Remplacez PATH par le chemin du fichier JSON contenant la clé de votre compte de service et FILE_NAME par le nom du fichier. Cette variable ne s'applique qu'à la session de shell actuelle. Par conséquent, si vous ouvrez une nouvelle session, vous devez de nouveau la définir.

export GOOGLE_APPLICATION_CREDENTIALS=PATH/FILE_NAME

Exemple :

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

PowerShell

Si vous utilisez Windows PowerShell, exécutez la commande suivante. Remplacez PATH par le chemin du fichier JSON contenant la clé de votre compte de service et FILE_NAME par le nom du fichier. Cette variable ne s'applique qu'à la session de shell actuelle. Par conséquent, si vous ouvrez une nouvelle session, vous devez de nouveau la définir.

$env:GOOGLE_APPLICATION_CREDENTIALS="PATH/FILE_NAME"

Exemple :

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

Une fois que vous avez défini la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS, les identifiants par défaut de l'application (ADC) peuvent déterminer implicitement vos identifiants.

Rechercher automatiquement des identifiants

Les bibliothèques clientes des API Google utilisent les identifiants par défaut de l'application pour trouver automatiquement les identifiants de votre application.

Lorsque votre code utilise une bibliothèque cliente, celle-ci vérifie vos identifiants dans l'ordre suivant :

  1. L'ADC vérifie si la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS est définie. Si elle est définie, l'ADC utilise le fichier de compte de service vers lequel la variable renvoie. La section Définir les variables d'environnement explique comment définir la variable d'environnement.
  2. Si la variable d'environnement n'est pas définie, l'ADC utilise le compte de service par défaut fourni par Compute Engine, Google Kubernetes Engine (GKE) ou App Engine si votre application s'exécute sur l'un de ces services.

Si l'ADC ne peut utiliser aucune des informations d'identification ci-dessus, une erreur se produit.

L'exemple de code suivant illustre l'utilisation d'ADC. L'exemple ne spécifie pas explicitement les identifiants de l'application. Cependant, l'ADC peut trouver implicitement les identifiants et les stocker dans la variable auth tant que la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS est définie, ou tant que l'application s'exécute sur Compute. App Engine, GKE ou App Engine.

Node.js

Utilise la bibliothèque cliente 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();

Obtenir et fournir les identifiants du compte de service manuellement

Vous pouvez créer et obtenir manuellement les identifiants du compte de service, puis les transmettre à votre application dans son code. Pour en savoir plus, consultez la section Obtenir et fournir manuellement les identifiants du compte de service.

Autorisation de compte de service à l'aide de jetons Web JSON (JWT)

Vous pouvez effectuer des appels autorisés à l'API Cloud Healthcare qui n'utilisent pas OAuth 2.0. Pour ce faire, utilisez un jeton Web JSON (JWT) signé directement en tant que jeton de support, au lieu d'un jeton d'accès OAuth 2.0. L'API Cloud Healthcare ne nécessite pas de méthode de génération de jeton spécifique. Un ensemble de bibliothèques clientes d'aide est disponible sur JWT.io. Lorsque vous utilisez un jeton JWT signé, vous pouvez éviter d'avoir à envoyer une requête réseau au serveur d'autorisation de Google avant d'effectuer un appel d'API.

Lorsque vous utilisez un jeton JWT, spécifiez https://healthcare.googleapis.com/ dans le champ aud.

Pour autoriser les appels vers l'API Cloud Healthcare à l'aide d'un jeton JWT au lieu d'un jeton d'accès, suivez les instructions de la section Avenant: Autorisation du compte de service sans OAuth.

Le jeton JWT que vous créez doit ressembler à l'exemple suivant :

   {
     "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
   }
   

Étape suivante