Autenticazione degli utenti

Questa pagina descrive come aggiungere all'API il supporto per l'autenticazione utente da 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 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

Questa pagina presuppone che tu abbia già:

  • Hai creato un progetto Google Cloud.

  • aggiunto la gestione dell'API;

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

    • iss
    • sub
    • aud
    • iat
    • exp

Autenticazione con Firebase Auth

Per supportare le chiamate da client che utilizzano Firebase Auth:

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

    import endpoints
    
  2. Aggiungi un oggetto emittente Firebase per ogni client al decoratore 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 dell'API.
    • Sostituisci VERSION_NUMBER con la versione dell'API, ad esempio v1.
    • Sostituisci code>YOUR_PROJECT_ID con Google Cloud all'ID progetto del client.
  3. In ogni metodo API in cui vuoi verificare l'autenticazione corretta, 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 nuovamente il deployment dell'API Endpoints 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 a e l'ID progetto deve essere elencato nell'emittente Firebase dell'API configurazione.

Autenticazione con Auth0

Per supportare le chiamate da client 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 dell'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 l'autenticazione corretta, 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 . Tu dover rieseguire il deployment dell'API ogni volta che aggiungi nuovi client.

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 nella configurazione dell'emittente Auth0 dell'API.

Autenticazione con i token di 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 proprietario dell'applicazione cliente deve generare l'ID cliente dalla console Google Cloud. Per istruzioni, vedi Creazione degli ID cliente.

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

    import endpoints
    
  3. Specifica tutti gli ID client a cui vuoi concedere l'accesso all'API in allowed_client_ids e specificare anche gli ID cliente appartenenti ad Android clienti 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 di OAuth 2 gli ID client generati dal progetto di ciascun cliente, e sostituiscono ANDROID_AUDIENCE con l'elenco del client web Android ID. L'ID client web è l'ID client con .apps.googleusercontent.com in aggiunta, ad esempio: YOUR_CLIENT_ID.apps.googleusercontent.com.

  4. In ogni metodo API in cui vuoi verificare l'autenticazione corretta, 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 nuovamente il deployment dell'API Endpoints ogni volta che aggiungi nuovi clienti.

Aggiunta dell'autenticazione del token dell'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 sulle sue differenze Autorizzazione delle chiavi API, consulta Quando e perché utilizzare le chiavi API.