Assurer l'authentification via un compte de service

Prérequis

Cette page suppose que vous avez déjà :

Configurer l'authentification

Pour vous authentifier avec un compte de service :

  1. Ajoutez les éléments suivants à votre annotation de méthode ou @Api :

    • Ajoutez à l'annotation un paramètre authenticators défini sur la valeur {EspAuthenticator.class}.
    • Ajoutez un paramètre issuers contenant un élément @ApiIssuer.
    • Ajoutez un paramètre issuerAudiences contenant un élément @ApiIssuerAudience défini sur l'émetteur du compte de service et votre audience.

    Exemple :

    @Api(
        name = "echo",
        version = "v1",
        authenticators = {EspAuthenticator.class},
        issuers = {
            @ApiIssuer(
                name = "serviceAccount",
                issuer = "YOUR_SERVICE_ACCOUNT_EMAIL",
                jwksUri = "https://www.googleapis.com/robot/v1/metadata/x509/YOUR_SERVICE_ACCOUNT_EMAIL")
        },
        issuerAudiences = {
            @ApiIssuerAudience(name = "serviceAccount", audiences = "YOUR_AUDIENCE")
        })
    
    • Remplacez echo par le nom de votre API.
    • Remplacez v1 par votre version de l'API.
    • Remplacez YOUR_SERVICE_ACCOUNT_EMAIL par l'adresse e-mail de votre compte de service.
    • Remplacez YOUR_AUDIENCE par la valeur du champ aud envoyé par le service appelant.
  2. Dans le code de mise en œuvre de l'API, importez Users :

    import com.google.api.server.spi.auth.common.User;
    
  3. Dans chaque méthode API pour laquelle vous souhaitez vérifier que l'authentification est appropriée, recherchez un élément User valide. S'il n'y en a pas, générez une exception comme indiqué dans cet exemple de définition de méthode :

    @ApiMethod(httpMethod = ApiMethod.HttpMethod.GET)
    public Email getUserEmail(User user) throws UnauthorizedException {
      if (user == null) {
        throw new UnauthorizedException("Invalid credentials");
      }
    
      Email response = new Email();
      response.setEmail(user.getEmail());
      return response;
    }
    
  4. Déployez l'API. Vous devez la redéployer à chaque ajout de nouveaux clients.