Autenticazione degli utenti

Questa pagina descrive come aggiungere all'API il supporto per l'autenticazione utente da applicazioni client che utilizzano i framework Cloud Endpoints. Tieni presente che Al momento sono supportati i client Android e JavaScript.

Endpoints Frameworks supporta l'autenticazione utente dal client che utilizzano una qualsiasi delle seguenti metodologie:

Indipendentemente dal metodo di autenticazione utilizzato, in ogni metodo API in cui vuoi per verificare la corretta autenticazione, devi verificare la presenza di un User valido come descritti nelle seguenti sezioni:

Prerequisiti

In questa pagina si presuppone che tu abbia già:

Autenticazione con Firebase Auth

Per supportare le chiamate da clienti che utilizzano Firebase Auth:

  1. Se non l'hai ancora fatto, crea un progetto Firebase. I progetti Firebase sono progetti della Console Google Cloud che utilizzano i servizi Firebase. Per maggiori informazioni le informazioni, vedi Che cos'è un progetto Firebase? e ai documentazione di Firebase.

  2. Aggiungi quanto segue al tuo @Api :

    • Aggiungi un parametro authenticators all'annotazione, impostato sul valore {EspAuthenticator.class}.
    • Aggiungi un parametro issuers contenente un @ApiIssuer impostato su Firebase.
    • Aggiungi un parametro issuerAudiences contenente un valore @ApiIssuerAudience impostato su Firebase e sull'ID progetto.

    Ad esempio:

    @Api(
        name = "YOUR_API_NAME",
        version = "VERSION_NUMBER",
        authenticators = {EspAuthenticator.class},
        issuers = {
            @ApiIssuer(
                name = "firebase",
                issuer = "https://securetoken.google.com/YOUR_PROJECT_ID",
                jwksUri = "https://www.googleapis.com/service_accounts/v1/metadata/x509/securetoken@system.gserviceaccount.com")
        },
        issuerAudiences = {
            @ApiIssuerAudience(name = "firebase", audiences = "YOUR_PROJECT_ID")
        })
    
    • Sostituisci YOUR_API_NAME con il nome della tua API.
    • Sostituisci VERSION_NUMBER con la tua versione API, per ad esempio v1.
    • Sostituisci entrambe le istanze di YOUR_PROJECT_ID con il tuo ID progetto Firebase.
  3. Nel codice di implementazione dell'API, importa Users:

    import com.google.api.server.spi.auth.common.User;
    
  4. In ogni metodo API in cui vuoi verificare la corretta autenticazione, verifica la presenza di un valore User valido e genera un'eccezione se non è presente, come mostrato in questa definizione di 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;
    }
    
  5. Esegui di nuovo il deployment dell'API ogni volta che aggiungi nuovi clienti.

Aggiunta dell'autenticazione Firebase a un client

Puoi aggiungere l'autenticazione Firebase al codice come descritto in Firebase documentazione. Il client deve avere un progetto Google Cloud associato e l'ID progetto deve essere elencato nella documentazione dell'API come mostrato nella sezione precedente.

Autenticazione con Auth0

Per supportare le chiamate da client che utilizzano Auth0:

  1. Aggiungi quanto segue al tuo @Api :

    • Aggiungi un parametro authenticators all'annotazione, impostato sul valore {EspAuthenticator.class}.
    • Aggiungi un parametro issuers contenente un @ApiIssuer impostato su Auth0.
    • Aggiungi un parametro issuerAudiences contenente un valore @ApiIssuerAudience impostato su Auth0 e sul tuo ID client Auth0.

    Ad esempio:

    @Api(
        name = "YOUR_API_NAME",
        version = "VERSION_NUMBER",
        authenticators = {EspAuthenticator.class},
        issuers = {
            @ApiIssuer(
                name = "auth0",
                issuer = "https://YOUR_ACCOUNT_NAME.auth0.com/",
                jwksUri = "https://YOUR_ACCOUNT_NAME.auth0.com/.well-known/jwks.json")
         },
         issuerAudiences = {
             @ApiIssuerAudience(name = "auth0", audiences = "AUTH0_CLIENT_ID")
        })
    
    • Sostituisci YOUR_API_NAME con il nome della tua API.
    • Sostituisci VERSION_NUMBER con la tua versione API, per ad esempio v1.
    • Sostituisci YOUR_ACCOUNT_NAME con l'account Auth0 il nome usato per il client.
    • Sostituisci AUTH0_CLIENT_ID con l'ID che vuoi utilizzare per il tuo client.
  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 la corretta autenticazione, verifica la presenza di un valore User valido e genera un'eccezione se non è presente, come mostrato in questa definizione di 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. Esegui di nuovo il deployment dell'API ogni volta che aggiungi nuovi clienti.

Aggiunta dell'autenticazione Auth0 a un client

Puoi aggiungere l'autenticazione Auth0 al tuo codice come descritto in Auth0 documentazione. Il client deve essere elencato nell'emittente Auth0 dell'API configurazione.

Autenticazione con token ID Google

Per supportare le chiamate da client che effettuano l'autenticazione utilizzando i token ID Google:

  1. Ottieni un ID client OAuth 2 per ogni applicazione client. Il cliente proprietario dell'applicazione deve generare l'ID client dalla console Google Cloud. Per istruzioni, vedi Creazione degli ID cliente.

  2. Aggiungi una voce clientIds contenente l'ID client per ogni app client a cui stai concedendo l'accesso, nonché una voce audiences per ogni client Android, nel tuo Annotazione @Api.

    Ad esempio:

    @Api(
       name = "YOUR_API_NAME",
       version = "VERSION_NUMBER",
       clientIds = {"YOUR_CLIENT_ID"},
       audiences = {"YOUR_CLIENT_ID"}
    )
    
    • Sostituisci YOUR_API_NAME con il nome della tua API.
    • Sostituisci VERSION_NUMBER con la tua versione API, per ad esempio v1.
    • Sostituisci YOUR_CLIENT_ID con l'ID client OAuth 2 generato nel progetto dell'applicazione client.
  3. Nel codice di implementazione dell'API, importa Users:

    import com.google.api.server.spi.auth.common.User;
    
  4. In ogni metodo API in cui vuoi verificare la corretta autenticazione, controlla per un valore User valido e genera un'eccezione se non è presente, come mostrato in questa definizione di 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;
    }
    
  5. Esegui di nuovo il deployment dell'API ogni volta che aggiungi nuovi clienti.

Aggiunta dell'autenticazione dei token ID Google a un client

Per informazioni sull'aggiunta di codice di autenticazione ai client, consulta le seguenti pagine:

Invio di un JWT nel client

Se utilizzi un JWT nel client per inviare richieste autenticate all'API, JWT deve essere nell'intestazione di autorizzazione di una richiesta HTTP. Il JWT dovrebbe avere le seguenti rivendicazioni obbligatorie:

  • iss
  • sub
  • aud
  • iat
  • exp

Passaggi successivi

Per informazioni di base sull'autenticazione utente e sulle sue differenze Autorizzazione delle chiavi API, consulta Quando e perché utilizzare le chiavi API.