ID regione
REGION_ID
è un codice abbreviato che Google assegna
in base alla regione selezionata al momento della creazione dell'app. Il codice non
corrisponde a un paese o a una provincia, anche se alcuni ID regione possono sembrare
simili ai codici paese e provincia 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 rilevare il proprio ID applicazione (chiamato anche ID progetto). Tramite l'ID, un'applicazione App Engine può rivendicare la propria identità ad altre app di App Engine, API di Google e applicazioni e servizi di terze parti. L'ID applicazione può essere utilizzato anche per generare un URL o un indirizzo email, oppure per prendere una decisione in fase di runtime.
Recupero dell'ID progetto
Puoi trovare l'ID progetto utilizzando il
app_identity.get_application_id()
metodo. L'ambiente WSGI o CGI espone alcuni dettagli
di implementazione, gestiti dall'API.
Recuperare il nome host dell'applicazione
Per impostazione predefinita, le app di App Engine vengono fornite 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 il metodo app_identity.get_default_version_hostname()
.
Dichiarazione dell'identità per altre app di App Engine
Se vuoi determinare l'identità dell'app di App Engine che invia 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 richieste devono essere impostate in modo da non seguire i reindirizzamenti.
Imposta il parametro
urlfetch.fetch()
follow_redirects
suFalse
.
Nel gestore delle applicazioni, puoi controllare l'ID in entrata leggendo l'intestazione X-Appengine-Inbound-Appid
e confrontandola con un elenco di ID autorizzati a effettuare richieste. Ad esempio:
Dichiarazione 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ò quindi 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()
.
Per i servizi che offrono ACL, puoi concedere l'accesso all'applicazione concedendo l'accesso a questo account.
Dichiarazione dell'identità a servizi di terze parti
Il token generato da get_access_token()
funziona solo con i servizi Google. Tuttavia, puoi utilizzare la tecnologia di firma sottostante per rivendicare l'identità della tua applicazione su altri servizi. Il metodo sign_blob()
firmerà i byte utilizzando una chiave privata univoca per l'applicazione, mentre il metodo get_public_certificates()
restituirà i 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 usare l'API App Identity. Chiama google.appengine.api.app_identity.app_identity.get_default_gcs_bucket_name.