Como autenticar com uma conta de serviço

Pré-requisitos

Nesta página, presume-se que você já:

Como configurar a autenticação

Para autenticar com uma conta de serviço:

  1. Adicione o seguinte à sua anotação de método ou @Api:

    • Adicione um parâmetro authenticators à anotação, definido para o valor {EspAuthenticator.class}.
    • Adicione um parâmetro issuers que contém um @ApiIssuer.
    • Adicione um parâmetro issuerAudiences que contém um @ApiIssuerAudience definido para o emissor da conta de serviço e seu segmento.

    Por exemplo:

    @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")
        })
    
    • Substitua echo pelo nome da API.
    • Substitua v1 pela versão da API.
    • Substitua YOUR_SERVICE_ACCOUNT_EMAIL pelo e-mail da conta de serviço.
    • Substitua YOUR_AUDIENCE pelo valor no campo aud enviado pelo serviço de chamada.
  2. No código de implementação da API, importe Users:

    import com.google.api.server.spi.auth.common.User;
    
  3. Em cada método de API em que você quer verificar a autenticação adequada, confira se há User válido e lance uma exceção se não houver, como mostrado nesta definição de método de exemplo:

    @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. Implante a API e reimplante-a sempre que adicionar novos clientes.