Autenticazione degli utenti

Questa pagina descrive come aggiungere il supporto nell'API per l'autenticazione utente dalle applicazioni client utilizzando i framework Cloud Endpoints. Tieni presente che al momento sono supportati i client Android e JavaScript.

Endpoints Frameworks supporta l'autenticazione utente dalle applicazioni client che utilizzano una delle seguenti metodologie:

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

Prerequisiti

Questa pagina presuppone che tu abbia già:

  • Ha creato un Google Cloud progetto.

  • aggiunto la gestione dell'API;

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

    • iss
    • sub
    • aud
    • iat
    • exp

Autenticazione con Firebase Auth

Per supportare le chiamate dai clienti che utilizzano Firebase Auth:

  1. Importa l'API App Engine Cloud Endpoints nella classe API:

    import endpoints
    
  2. Aggiungi un oggetto emittente Firebase per ogni client al decorator API. Ad esempio:

    @endpoints.api(
        name='YOUR_API_NAME',
        version='VERSION_NUMBER',
        issuers={'firebase': endpoints.Issuer(
            'https://securetoken.google.com/YOUR_PROJECT_ID,
            'https://www.googleapis.com/service_accounts/v1/metadata/x509/securetoken@system.gserviceaccount.com')})
    
    • Sostituisci YOUR_API_NAME con il nome della tua API.
    • Sostituisci VERSION_NUMBER con la versione dell'API, ad esempio v1.
    • Sostituisci code>YOUR_PROJECT_ID con l'ID progetto del cliente. Google Cloud
  3. In ogni metodo API in cui vuoi verificare la corretta autenticazione, controlla la presenza di un User valido e genera error 401 se non è presente, come mostrato in questa definizione di metodo di esempio:

    user = endpoints.get_current_user()
    # If there's no user defined, the request was unauthenticated, so we
    # raise 401 Unauthorized.
    
  4. Esegui il deployment dell'API Endpoints. Devi eseguire di nuovo il deployment dell'API Endpoints ogni volta che aggiungi nuovi client.

Aggiunta dell'autenticazione Firebase a un client

Puoi aggiungere l'autenticazione Firebase al tuo codice come descritto nella documentazione di Firebase. Il client deve avere un progetto Google Cloud associato e l'ID progetto deve essere elencato nella configurazione dell'emittente Firebase dell'API.

Autenticazione con Auth0

Per supportare le chiamate dei clienti che utilizzano Auth0:

  1. Importa l'API App Engine Endpoints nella classe API:

    import endpoints
    
  2. Aggiungi un oggetto emittente Auth0 per ogni client al decoratore API. Ad esempio:

    @endpoints.api(
        name='YOUR_API_NAME',
        version='VERSION_NUMBER',
        issuers={'auth0': endpoints.Issuer(
            'https://YOUR_ACCOUNT_NAME.auth0.com',
            'https://YOUR_ACCOUNT_NAME.auth0.com/.well-known/jwks.json')})
    
    • Sostituisci YOUR_API_NAME con il nome della tua API.
    • Sostituisci VERSION_NUMBER con la versione dell'API, ad esempio v1.
    • Sostituisci YOUR_ACCOUNT_NAME con il nome dell'account Auth0 utilizzato per il cliente.
  3. In ogni metodo API in cui vuoi verificare la corretta autenticazione, controlla la presenza di un User valido e genera error 401 se non è presente, come mostrato in questa definizione di metodo di esempio:

    user = endpoints.get_current_user()
    # If there's no user defined, the request was unauthenticated, so we
    # raise 401 Unauthorized.
    
  4. Distribuisci l'API . Devi ridistribuire l'API ogni volta che aggiungi nuovi client.

Aggiunta dell'autenticazione Auth0 a un client

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

Autenticazione con i token ID Google

Per supportare le chiamate dei client che eseguono l'autenticazione utilizzando i token ID Google:

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

  2. Importa l'API App Engine Endpoints nella classe API:

    import endpoints
    
  3. Specifica tutti gli ID client a cui vuoi concedere l'accesso alla tua API nel campo allowed_client_ids e specifica anche gli ID client appartenenti a client Android nel campo audiences nel decoratore API. Ad esempio:

    @endpoints.api(
        name='YOUR_API_NAME',
        version='VERSION_NUMBER',
        allowed_client_ids=ALLOWED_CLIENT_IDS,
        audiences=[ANDROID_AUDIENCE])
    class AuthedGreetingApi(remote.Service):
        # ...
    

    Sostituisci ALLOWED_CLIENT_IDS con l'elenco degli ID client OAuth 2 generati da ogni progetto del client e sostituisci ANDROID_AUDIENCE con l'elenco degli ID client web Android. L'ID client web è l'ID client con .apps.googleusercontent.com aggiunto, ad esempio: YOUR_CLIENT_ID.apps.googleusercontent.com.

  4. In ogni metodo API in cui vuoi verificare la corretta autenticazione, controlla la presenza di un User valido e genera error 401 se non è presente, come mostrato in questa definizione di metodo di esempio:

    user = endpoints.get_current_user()
    # If there's no user defined, the request was unauthenticated, so we
    # raise 401 Unauthorized.
    
  5. Esegui il deployment dell'API Endpoints. Devi eseguire di nuovo il deployment dell'API Endpoints ogni volta che aggiungi nuovi client.

Aggiunta dell'autenticazione con token ID Google a un client

Per informazioni sull'aggiunta del codice di autenticazione ai client, consulta quanto segue:

Passaggi successivi

Per informazioni di base sull'autenticazione utente e su come si differenzia dall'autorizzazione della chiave API, consulta Quando e perché utilizzare le chiavi API.