Autenticazione con un account di servizio

Prerequisiti

Questa pagina presuppone che tu abbia già:

Configurazione dell'autenticazione

Per eseguire l'autenticazione con un account di servizio:

  1. Aggiungi quanto segue all'annotazione @Api o del metodo:

    • Aggiungi un parametro authenticators all'annotazione, impostato sul valore {EspAuthenticator.class}.
    • Aggiungi un parametro issuers contenente un @ApiIssuer.
    • Aggiungi un parametro issuerAudiences contenente un set @ApiIssuerAudience per l'emittente dell'account di servizio e il tuo segmento di pubblico.

    Ad esempio:

    @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")
        })
    
    • Sostituisci echo con il nome della tua API.
    • Sostituisci v1 con la tua versione dell'API.
    • Sostituisci YOUR_SERVICE_ACCOUNT_EMAIL con l'indirizzo email del tuo account di servizio.
    • Sostituisci YOUR_AUDIENCE con il valore nel campo aud inviato dal servizio chiamante.
  2. Nel codice di implementazione dell'API, importa Users:

    import com.google.api.server.spi.auth.common.User;
    
  3. In ogni metodo API in cui vuoi verificare l'autenticazione corretta, verifica la presenza di un User valido e, se non è presente, genera un'eccezione, come mostrato nella definizione del metodo di esempio:

    @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. Distribuisci l'API . Devi eseguire nuovamente il deployment dell'API ogni volta che aggiungi nuovi client.