API App Identity per servizi in bundle legacy

ID regione

REGION_ID è un codice abbreviato assegnato da Google in base alla regione selezionata quando crei l'app. Il codice non corrisponde a un paese o a una provincia, anche se alcuni ID regione possono sembrare simili ai codici di paesi e province di uso comune. Per le app create dopo febbraio 2020, REGION_ID.r è incluso negli URL di App Engine. Per le app esistenti create prima di questa data, l'ID regione è facoltativo nell'URL.

Scopri di più sugli ID regione.

L'API App Identity consente a un'applicazione di scoprire il proprio ID applicazione (chiamato anche ID progetto). Utilizzando l'ID, un'applicazione App Engine può affermare la propria identità ad altre app App Engine, API Google e applicazioni e servizi di terze parti. L'ID applicazione può essere utilizzato anche per generare un URL o un indirizzo email o per prendere una decisione di runtime.

Ottenere l'ID progetto

L'ID progetto può essere trovato utilizzando il metodo app_identity.get_application_id(). L'ambiente WSGI o CGI mostra alcuni dettagli di implementazione, gestiti dall'API.

Ottenere il nome host dell'applicazione

Per impostazione predefinita, le app App Engine vengono pubblicate da URL nel formato https://PROJECT_ID.REGION_ID.r.appspot.com, dove l'ID progetto fa parte del nome host. Se un'app viene pubblicata da un dominio personalizzato, potrebbe essere necessario recuperare l'intero componente del nome host. Puoi farlo utilizzando l'attributo app_identity.get_default_version_hostname().

Verifica dell'identità ad altre app App Engine

Se vuoi determinare l'identità dell'app App Engine che sta inviando una richiesta alla tua app App Engine, puoi utilizzare l'intestazione della richiestaX-Appengine-Inbound-Appid. Questo intestazione viene aggiunto alla richiesta dal servizio URLFetch e non è modificabile dall'utente, pertanto indica in modo sicuro l'ID progetto dell'applicazione richiedente, se presente.

Requisiti:

  • Solo le chiamate effettuate al dominio appspot.com della tua app conterranno l'intestazione X-Appengine-Inbound-Appid. Le chiamate ai domini personalizzati non contengono l'intestazione.

  • Le richieste devono essere impostate in modo da non seguire i reindirizzamenti.

    Imposta il parametro urlfetch.fetch() follow_redirects su False.

Nel gestore dell'applicazione, puoi controllare l'ID in arrivo leggendo l'intestazioneX-Appengine-Inbound-Appid e confrontandolo con un elenco di ID autorizzati a effettuare richieste.

Affermazione dell'identità alle API di Google

Le API di Google utilizzano il protocollo OAuth 2.0 per l'autenticazione e l'autorizzazione. L'API App Identity può creare token OAuth che possono essere utilizzati per affermare che l'origine di una richiesta è l'applicazione stessa. Il metodo get_access_token() restituisce un token di accesso per un ambito o un elenco di ambiti. Questo token può essere impostato nelle intestazioni HTTP di una chiamata per identificare l'applicazione chiamante.

Tieni presente che l'identità dell'applicazione è rappresentata dal nome dell'account di servizio, che in genere è applicationid@appspot.gserviceaccount.com. Puoi ottenere il valore esatto utilizzando il metodo get_service_account_name(), il metodo . Per i servizi che offrono ACL, puoi concedere l'accesso all'applicazione concedendo l'accesso a questo account.

Verifica dell'identità per i servizi di terze parti

Il token generato dal metodo get_access_token() funziona solo con i servizi Google. Tuttavia, puoi utilizzare la tecnologia di firma sottostante per affermare l'identità della tua applicazione ad altri servizi. Il metodo sign_blob() firmerà i byte utilizzando una chiave privata univoca per la tua applicazione, mentre il metodo get_public_certificates() restituirà i certificati che possono essere utilizzati per convalidare la firma.

Ottenere il nome del bucket Cloud Storage predefinito

Ogni applicazione può avere un bucket Cloud Storage predefinito, che include 5 GB di spazio di archiviazione gratuito e una quota gratuita per le operazioni di I/O.

Per ottenere il nome del bucket predefinito, puoi utilizzare l'API App Identity. Chiama google.appengine.api.app_identity.app_identity.get_default_gcs_bucket_name .