ID regione
REGION_ID
è un codice abbreviato assegnato da Google in base all'area geografica selezionata quando crei l'app. Il codice non corrisponde a un paese o a una provincia, anche se alcuni ID area geografica potrebbero sembrare simili ai codici paese e provincia più utilizzati. 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 rilevare il suo ID applicazione (noto anche come ID progetto). Tramite l'ID, un'applicazione App Engine può confermare la propria identità ad altre applicazioni App Engine, API di Google e servizi e applicazioni 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.
Acquisizione dell'ID progetto
L'ID progetto può essere trovato utilizzando il metodo
app_identity.get_application_id()
. L'ambiente WSGI o CGI espone alcuni dettagli di implementazione, che sono gestiti dall'API.
Recupero del 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
, in cui l'ID progetto fa parte del nome host.
Se un'app viene gestita da un dominio personalizzato, potrebbe essere necessario recuperare l'intero componente nome host. A questo scopo, utilizza il metodo app_identity.get_default_version_hostname()
.
Rivendicazione dell'identità in altre app App Engine
Se vuoi determinare l'identità dell'app App Engine che effettua una richiesta alla tua app App Engine, puoi utilizzare l'intestazione della richiesta X-Appengine-Inbound-Appid
. Questa intestazione viene aggiunta alla richiesta dal servizio URLFetch e non è modificabile dall'utente, quindi 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'intestazioneX-Appengine-Inbound-Appid
. Le chiamate ai domini personalizzati non contengono l'intestazione. -
Le tue richieste devono essere impostate in modo da non seguire i reindirizzamenti.
Imposta il parametro
urlfetch.fetch()
follow_redirects
suFalse
.
Nel gestore dell'applicazione, puoi controllare l'ID in entrata leggendo l'intestazione X-Appengine-Inbound-Appid
e confrontandolo con un elenco di ID autorizzati a effettuare richieste. Ad esempio:
Rivendicazione 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 dichiarare 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ò quindi essere impostato nelle intestazioni HTTP di una chiamata per identificare l'applicazione di chiamata.
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 con il metodo get_service_account_name()
.
Per i servizi che offrono ACL, puoi concedere l'accesso all'applicazione concedendo questo accesso all'account.
Rivendicazione dell'identità a servizi di terze parti
Il token generato da get_access_token()
funziona solo per i servizi Google. Tuttavia, puoi utilizzare la tecnologia di firma sottostante per rivendicare 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à certificati che possono essere utilizzati per convalidare la firma.
Recupero del 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.