Autenticarse con una cuenta de servicio

Requisitos previos

En esta página se da por hecho que ya has hecho lo siguiente:

Configurar la autenticación

Para autenticarte con una cuenta de servicio, sigue estos pasos:

  1. Añade lo siguiente a tu @Api o anotación de método:

    • Añada un parámetro authenticators a su anotación y asígnele el valor {EspAuthenticator.class}.
    • Añade un parámetro issuers que contenga un @ApiIssuer.
    • Añade un parámetro issuerAudiences que contenga un @ApiIssuerAudience definido en el emisor de la cuenta de servicio y tu audiencia.

    Por ejemplo:

    @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")
        })
    
    • Sustituye echo por el nombre de tu API.
    • Sustituye v1 por tu versión de la API.
    • Sustituye YOUR_SERVICE_ACCOUNT_EMAIL por el correo de tu cuenta de servicio.
    • Sustituye YOUR_AUDIENCE por el valor del campo aud enviado por el servicio de llamada.
  2. En el código de implementación de la API, importa Users:

    import com.google.api.server.spi.auth.common.User;
    
  3. En cada método de API en el que quieras comprobar que la autenticación es correcta, comprueba que haya un User válido y genera una excepción si no lo hay, tal como se muestra en esta definición de método de ejemplo:

    @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. Despliega la API. Debe volver a implementar la API cada vez que añada clientes nuevos.