Autentica con una cuenta de servicio

Requisitos previos

En esta página, se supone que ya:

Cómo configurar la autenticación

Para autenticar con una cuenta de servicio, haz lo siguiente:

  1. Agrega lo siguiente a tu anotación del método o @Api:

    • Agrega un parámetro authenticators a tu anotación, configurado como el valor {EspAuthenticator.class}.
    • Agrega un parámetro issuers que contenga un @ApiIssuer.
    • Agrega un parámetro issuerAudiences que contenga un @ApiIssuerAudience para la entidad emisora de la cuenta de servicio y tu público.

    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")
        })
    
    • Reemplaza echo por el nombre de tu API.
    • Reemplaza v1 por tu versión de API.
    • Reemplaza YOUR_SERVICE_ACCOUNT_EMAIL por el correo electrónico de tu cuenta de servicio.
    • Reemplaza YOUR_AUDIENCE por el valor en el campo aud que se envía en el servicio en el que se realiza la llamada.
  2. En tu código de implementación de la API, importa Users con el siguiente comando:

    import com.google.api.server.spi.auth.common.User;
    
  3. En cada método de API donde quieras verificar la autenticación correcta, comprueba si hay un User válido y arroja una excepción si no hay uno, como se muestra en la definición del método de muestra:

    @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. Implementa la API. Tienes que volver a implementar la API cada vez que agregues clientes nuevos.