Autenticazione con Mappe di Azure
Mappe di Azure supporta tre modi per autenticare le richieste: autenticazione con chiave condivisa, autenticazione dell'ID di Accesso condiviso e autenticazione del token di firma di accesso condiviso. Questo articolo illustra i metodi di autenticazione per facilitare l'implementazione dei servizi di Mappe di Azure. L'articolo descrive anche altri controlli account, ad esempio la disabilitazione dell'autenticazione locale per Criteri di Azure e la condivisione di risorse tra le origini (CORS).
Nota
Per migliorare la comunicazione sicura con Mappe di Azure, ora supportiamo Transport Layer Security (TLS) 1.2 e stiamo ritirando il supporto per TLS 1.0 e 1.1. Se attualmente si usa TLS 1.x, valutare l'idoneità di TLS 1.2 e sviluppare un piano di migrazione con i test descritti in Risoluzione del problema di TLS 1.0.
Autenticazione con chiave condivisa
Per informazioni sulla visualizzazione delle chiavi nella portale di Azure, vedere Visualizzare i dettagli dell'autenticazione.
Le chiavi primarie e secondarie vengono generate dopo la creazione dell'account Mappe di Azure. È consigliabile usare la chiave primaria come chiave di sottoscrizione quando si chiama Mappe di Azure con l'autenticazione con chiave condivisa. L'autenticazione con chiave condivisa passa una chiave generata da un account Mappe di Azure a un servizio Mappe di Azure. Per ogni richiesta di Mappe di Azure servizi, aggiungere la chiave di sottoscrizione come parametro all'URL. La chiave secondaria può essere usata in scenari come modifiche delle chiavi in sequenza.
Esempio di uso della chiave di sottoscrizione come parametro nell'URL:
https://atlas.microsoft.com/mapData/upload?api-version=1.0&dataFormat=zip&subscription-key={Your-Azure-Maps-Subscription-key}
Importante
Le chiavi primarie e secondarie devono essere considerate come dati sensibili. La chiave condivisa viene usata per autenticare tutte le API REST Mappe di Azure. Gli utenti che usano una chiave condivisa devono astrarre la chiave API, tramite variabili di ambiente o archiviazione privata sicura, in cui può essere gestita centralmente.
Autenticazione Microsoft Entra
Le sottoscrizioni di Azure vengono fornite con un tenant di Microsoft Entra per abilitare un controllo di accesso granulare. Mappe di Azure offre l'autenticazione per i servizi di Mappe di Azure tramite Microsoft Entra ID. Microsoft Entra ID fornisce l'autenticazione basata sull'identità per utenti e applicazioni registrati nel tenant di Microsoft Entra.
Mappe di Azure accetta Token di accesso OAuth 2.0 per i tenant di Microsoft Entra associati a una sottoscrizione di Azure che contiene un account Mappe di Azure. Mappe di Azure accetta anche i token per:
- Utenti di Microsoft Entra
- Applicazioni partner che usano autorizzazioni delegate dagli utenti
- Identità gestite per le risorse di Azure
Mappe di Azure genera un identificatore univoco (ID client) per ogni account Mappe di Azure. È possibile richiedere token da Microsoft Entra ID quando si combina questo ID client con altri parametri.
Per altre informazioni su come configurare Microsoft Entra ID e richiedere token per Mappe di Azure, vedere Gestire l'autenticazione in Mappe di Azure.For more information about how to configure Microsoft Entra ID and request tokens for Mappe di Azure, see Manage authentication in Mappe di Azure.
Per informazioni generali sull'autenticazione con Microsoft Entra ID, vedere Autenticazione e autorizzazione.
Identità gestite per risorse di Azure e Mappe di Azure
Le identità gestite per le risorse di Azure forniscono servizi di Azure con un'entità di sicurezza basata su applicazioni gestite automaticamente che può eseguire l'autenticazione con l'ID Microsoft Entra. Con il controllo degli accessi in base al ruolo di Azure, l'entità di sicurezza delle identità gestite può essere autorizzata ad accedere ai servizi Mappe di Azure. Alcuni esempi di identità gestite includono: servizio app Azure, Funzioni di Azure e Azure Macchine virtuali. Per un elenco delle identità gestite, vedere Servizi di Azure che possono usare le identità gestite per accedere ad altri servizi. Per altre informazioni sulle identità gestite, vedere Gestire l'autenticazione in Mappe di Azure.
Configurare l'autenticazione microsoft Entra dell'applicazione
Le applicazioni eseguono l'autenticazione con il tenant di Microsoft Entra usando uno o più scenari supportati forniti dall'ID Microsoft Entra. Ogni scenario dell'applicazione Microsoft Entra rappresenta requisiti diversi in base alle esigenze aziendali. Alcune applicazioni possono richiedere esperienze di accesso utente e altre applicazioni possono richiedere un'esperienza di accesso dell'applicazione. Vedere Flussi di autenticazione e scenari di applicazione.
Dopo che l'applicazione riceve un token di accesso, l'SDK e/o l'applicazione invia una richiesta HTTPS con il set seguente di intestazioni HTTP necessarie oltre ad altre intestazioni HTTP dell'API REST:
Nome intestazione | Valore |
---|---|
x-ms-client-id | 30d7cc... 9f55 |
Autorizzazione | Bearer eyJ0e... HNIVN |
Nota
x-ms-client-id
è il GUID basato sull'account di Mappe di Azure che compare nella pagina di autenticazione di Mappe di Azure.
Di seguito è riportato un esempio di richiesta di route Mappe di Azure che usa un token di connessione OAuth OAuth ID Microsoft Entra:
GET /route/directions/json?api-version=1.0&query=52.50931,13.42936:52.50274,13.43872
Host: atlas.microsoft.com
x-ms-client-id: 30d7cc….9f55
Authorization: Bearer eyJ0e…HNIVN
Per informazioni sulla visualizzazione dell'ID client, vedere Visualizzare i dettagli di autenticazione.
Suggerimento
Recupero dell'ID client a livello di codice
Quando si usa PowerShell, l'ID client viene archiviato come UniqueId
Proprietà nell'oggetto IMapsAccount
. È possibile recuperare questa proprietà usando Get-AzMapsAccount
, ad esempio:
$maps = Get-AzMapsAccount -Name {Azure-Maps_Account-Name} -ResourceGroupName {Resource-Group-Name} -SubscriptionId {SubscriptionId}
$ClientId = $maps.UniqueId
Quando si usa l'interfaccia della riga di comando di Azure usare il az maps account show
comando con il --query
parametro , ad esempio:
$ClientId = az maps account show --name {Azure-Maps_Account-Name} --resource-group {Resource-Group-Name} --subscription {SubscriptionId} --query properties.uniqueId
Autorizzazione con il controllo degli accessi in base al ruolo
Prerequisiti
Se non si ha familiarità con il controllo degli accessi in base al ruolo di Azure, alla panoramica del controllo degli accessi in base al ruolo di Azure viene concesso un set di autorizzazioni, noto anche come definizione di ruolo. Una definizione di ruolo fornisce le autorizzazioni per le azioni dell'API REST. Mappe di Azure supporta l'accesso a tutti i tipi di entità per Controllo degli accessi in base al ruolo di Azure, tra cui: singoli utenti, gruppi, applicazioni, risorse di Azure e identità gestite di Azure. L'applicazione dell'accesso a uno o più account Mappe di Azure è noto come ambito. Un'assegnazione di ruolo viene creata quando viene applicata un'entità, una definizione di ruolo e un ambito.
Panoramica
Le sezioni successive illustrano concetti e componenti dell'integrazione di Mappe di Azure con il controllo degli accessi in base al ruolo di Azure. Come parte del processo per configurare l'account Mappe di Azure, una directory Microsoft Entra è associata alla sottoscrizione di Azure, che risiede l'account Mappe di Azure.
Quando si configura il controllo degli accessi in base al ruolo di Azure, si sceglie un'entità di sicurezza e la si applica a un'assegnazione di ruolo. Per informazioni su come aggiungere assegnazioni di ruolo nella portale di Azure, vedere Assegnare ruoli di Azure usando il portale di Azure.
Selezione di una definizione di ruolo
Esistono i tipi di definizione di ruolo seguenti per supportare gli scenari dell'applicazione.
Definizione del ruolo di Azure | Descrizione |
---|---|
Mappe di Azure ricerca ed eseguire il rendering del lettore di dati | Fornisce l'accesso solo alla ricerca e al rendering Mappe di Azure API REST per limitare l'accesso ai casi d'uso di base del Web browser. |
Lettore di dati per Mappe di Azure | Fornisce l'accesso alle API REST non modificabili Mappe di Azure. |
Collaboratore dati Mappe di Azure | Fornisce l'accesso alle API REST modificabili Mappe di Azure. Mutabilità, definita dalle azioni: scrittura ed eliminazione. |
Mappe di Azure ruolo di lettura e batch dei dati | Questo ruolo può essere usato per assegnare azioni di lettura e batch in Mappe di Azure. |
Definizione di ruolo personalizzata | Creare un ruolo creato per abilitare l'accesso flessibile con restrizioni alle API REST Mappe di Azure. |
Alcuni servizi Mappe di Azure possono richiedere privilegi elevati per eseguire azioni di scrittura o eliminazione nelle API REST Mappe di Azure. Mappe di Azure ruolo Collaboratore dati è necessario per i servizi, che forniscono azioni di scrittura o eliminazione. La tabella seguente descrive quali servizi Mappe di Azure Collaboratore dati è applicabile quando si usano azioni di scrittura o eliminazione. Quando sono necessarie solo azioni di lettura, è possibile usare il ruolo lettore dati Mappe di Azure al posto del ruolo Collaboratore dati Mappe di Azure.
servizio Mappe di Azure | definizione del ruolo Mappe di Azure |
---|---|
Dati | Collaboratore dati Mappe di Azure |
Creator | Collaboratore dati Mappe di Azure |
Spatial | Collaboratore dati Mappe di Azure |
Ricerca batch e route | Collaboratore dati Mappe di Azure |
Per informazioni sulla visualizzazione delle impostazioni del controllo degli accessi in base al ruolo di Azure, vedere Come configurare il controllo degli accessi in base al ruolo di Azure per Mappe di Azure.
Definizioni di ruolo personalizzate
Un aspetto della sicurezza delle applicazioni è il principio dei privilegi minimi, la pratica di limitare i diritti di accesso ai diritti necessari per il processo corrente. La limitazione dei diritti di accesso viene eseguita creando definizioni di ruolo personalizzate che supportano i casi d'uso che richiedono un'ulteriore granularità per il controllo di accesso. Per creare una definizione di ruolo personalizzata, selezionare azioni di dati specifiche da includere o escludere per la definizione.
La definizione di ruolo personalizzata può quindi essere usata in un'assegnazione di ruolo per qualsiasi entità di sicurezza. Per altre informazioni sulle definizioni dei ruoli personalizzati di Azure, vedere Ruoli personalizzati di Azure.
Ecco alcuni scenari di esempio in cui i ruoli personalizzati possono migliorare la sicurezza delle applicazioni.
Scenario | Azioni personalizzate per i dati dei ruoli |
---|---|
Pagina Web di accesso pubblica o interattiva con riquadri della mappa di base e nessun'altra API REST. | Microsoft.Maps/accounts/services/render/read |
Un'applicazione, che richiede solo la geocodifica inversa e nessun'altra API REST. | Microsoft.Maps/accounts/services/search/read |
Ruolo per un'entità di sicurezza, che richiede una lettura di Mappe di Azure api REST per i dati delle mappe basate su Creator e le API REST del riquadro della mappa di base. | Microsoft.Maps/accounts/services/data/read , Microsoft.Maps/accounts/services/render/read |
Ruolo per un'entità di sicurezza, che richiede la lettura, la scrittura e l'eliminazione dei dati della mappa basata su Creator. Definito come ruolo dell'editor di dati della mappa che non consente l'accesso ad altre API REST, ad esempio riquadri della mappa di base. | Microsoft.Maps/accounts/services/data/read , Microsoft.Maps/accounts/services/data/write , Microsoft.Maps/accounts/services/data/delete |
Informazioni sull'ambito
Quando si crea un'assegnazione di ruolo, viene definita all'interno della gerarchia di risorse di Azure. La parte superiore della gerarchia è un gruppo di gestione e la più bassa è una risorsa di Azure, ad esempio un account Mappe di Azure. L'assegnazione di un'assegnazione di ruolo a un gruppo di risorse può consentire l'accesso a più account o risorse Mappe di Azure nel gruppo.
Suggerimento
La raccomandazione generale di Microsoft consiste nell'assegnare l'accesso all'ambito dell'account Mappe di Azure perché impedisce l'accesso non intenzionale ad altri account Mappe di Azure esistenti nella stessa sottoscrizione di Azure.
Disabilitare l'autenticazione locale
Mappe di Azure account supportano la proprietà standard di Azure in API di gestione per Microsoft.Maps/accounts
denominata disableLocalAuth
. Quando true
, l'autenticazione per l'API REST del piano dati Mappe di Azure è disabilitata, ad eccezione dell'autenticazione di Microsoft Entra. Viene configurato usando Criteri di Azure per controllare la distribuzione e la gestione di chiavi condivise e token di firma di accesso condiviso. Per altre informazioni, vedere Informazioni su Criteri di Azure.
La disabilitazione dell'autenticazione locale non ha effetto immediato. Attendere alcuni minuti prima che il servizio blocchi le richieste di autenticazione future. Per riabilitare l'autenticazione locale, impostare la proprietà su false
e dopo alcuni minuti viene ripresa l'autenticazione locale.
{
// omitted other properties for brevity.
"properties": {
"disableLocalAuth": true
}
}
Autenticazione del token di firma di accesso condiviso
I token di firma di accesso condiviso (SAS) sono token di autenticazione creati usando il formato JWT (JSON Web Token) e sono firmati crittograficamente per dimostrare l'autenticazione per un'applicazione all'API REST Mappe di Azure. Un token di firma di accesso condiviso, creato integrando un'identità gestita assegnata dall'utente con un account Mappe di Azure nella sottoscrizione di Azure. All'identità gestita assegnata dall'utente viene concessa l'autorizzazione per l'account Mappe di Azure tramite il controllo degli accessi in base al ruolo di Azure usando definizioni di ruolo predefinite o personalizzate.
Differenze di chiave funzionale del token di firma di accesso condiviso dai token di accesso Microsoft Entra:
- Durata di un token per una scadenza massima di un giorno (24 ore).
- Posizione di Azure e controllo di accesso geografico per token.
- Limiti di frequenza per token per un valore approssimativo da 1 a 500 richieste al secondo.
- Le chiavi private del token sono le chiavi primarie e secondarie di una risorsa account Mappe di Azure.
- L'oggetto entità servizio per l'autorizzazione viene fornito da un'identità gestita assegnata dall'utente.
I token di firma di accesso condiviso non sono modificabili. Ciò significa che una volta creato un token, il token di firma di accesso condiviso è valido fino a quando non viene soddisfatta la scadenza e non è possibile modificare la configurazione delle aree consentite, dei limiti di frequenza e dell'identità gestita assegnata dall'utente. Per altre informazioni sul controllo di accesso per la revoca dei token di firma di accesso condiviso e sulle modifiche apportate al controllo di accesso, vedere di seguito.
Informazioni sui limiti di frequenza dei token di firma di accesso condiviso
Il limite massimo di velocità del token di firma di accesso condiviso può controllare la fatturazione per una risorsa Mappe di Azure
Quando si specifica un limite di velocità massimo per il token (maxRatePerSecond
), le tariffe in eccesso non vengono fatturate all'account che consente di impostare un limite massimo di transazioni fatturabili per l'account, quando si usa il token. Tuttavia, l'applicazione riceve risposte di errore client con 429 (TooManyRequests)
per tutte le transazioni una volta raggiunto tale limite. È responsabilità dell'applicazione gestire i tentativi e la distribuzione dei token di firma di accesso condiviso. Non esiste alcun limite al numero di token di firma di accesso condiviso che è possibile creare per un account. Per consentire un aumento o una diminuzione del limite di un token esistente; è necessario creare un nuovo token di firma di accesso condiviso. Il token di firma di accesso condiviso precedente è ancora valido fino alla scadenza.
Esempio stimato:
Frequenza massima approssimativa al secondo | Velocità effettiva al secondo | Durata della velocità sostenuta in secondi | Totale transazioni fatturabili |
---|---|---|---|
10 | 20 | 600 | 6.000 |
I limiti di velocità effettivi variano in base alla capacità di Mappe di Azure di applicare la coerenza entro un intervallo di tempo. Tuttavia, ciò consente il controllo preventivo dei costi di fatturazione.
I limiti di frequenza vengono applicati per ogni località di Azure, non a livello globale o geografico
Ad esempio, è possibile usare un singolo token di firma di accesso condiviso con un maxRatePerSecond
valore pari a 10 per limitare la velocità effettiva nella East US
posizione. Se lo stesso token viene usato in West US 2
, viene creato un nuovo contatore per limitare la velocità effettiva a 10 in tale posizione, indipendentemente dalla East US
posizione. Per controllare i costi e migliorare la prevedibilità, è consigliabile:
- Creare token di firma di accesso condiviso con località di Azure designate per l'area geografica di destinazione. Continuare a leggere per comprendere la creazione di token di firma di accesso condiviso.
- Usare gli endpoint dell'API REST del piano dati geografico
https://us.atlas.microsoft.com
ohttps://eu.atlas.microsoft.com
.
Si consideri la topologia dell'applicazione in cui l'endpoint https://us.atlas.microsoft.com
instrada le stesse posizioni degli Stati Uniti ospitate dai servizi Mappe di Azure, ad esempio East US
, West Central US
o West US 2
. La stessa idea si applica ad altri endpoint geografici, ad https://eu.atlas.microsoft.com
esempio tra West Europe
e North Europe
. Per evitare denial di autorizzazione imprevisti, usare un token di firma di accesso condiviso che usa le stesse posizioni di Azure usate dall'applicazione. Il percorso dell'endpoint viene definito usando l'API REST di gestione Mappe di Azure.
I limiti di frequenza predefiniti accettano precedenti rispetto ai limiti di frequenza dei token di firma di accesso condiviso
Come descritto in Mappe di Azure limiti di frequenza, le singole offerte di servizi hanno limiti di frequenza variabili applicati come aggregazione dell'account.
Si consideri il caso di servizio di ricerca - Inverso non batch, con un limite di 250 query al secondo (QPS) per le tabelle seguenti. Ogni tabella rappresenta il totale stimato delle transazioni riuscite dall'utilizzo di esempio.
La prima tabella mostra un token con una richiesta massima al secondo di 500 e l'utilizzo effettivo dell'applicazione è di 500 richieste al secondo per una durata di 60 secondi. servizio di ricerca - Il reverse non batch ha un limite di velocità pari a 250, ovvero del totale di 30.000 richieste effettuate nei 60 secondi; 15.000 di tali richieste sono transazioni fatturabili. Le richieste rimanenti comportano il codice 429 (TooManyRequests)
di stato .
Nome | Frequenza massima approssimativa al secondo | Velocità effettiva al secondo | Durata della velocità sostenuta in secondi | Transazioni totali approssimative riuscite |
---|---|---|---|---|
token | 500 | 500 | 60 | ~15.000 |
Ad esempio, se vengono creati due token di firma di accesso condiviso in e si usa la stessa posizione di un account Mappe di Azure, ogni token condivide ora il limite di frequenza predefinito di 250 QPS. Se ogni token viene usato contemporaneamente con lo stesso token di velocità effettiva 1 e il token 2 concedono correttamente 7500 transazioni riuscite.
Nome | Frequenza massima approssimativa al secondo | Velocità effettiva al secondo | Durata della velocità sostenuta in secondi | Transazioni totali approssimative riuscite |
---|---|---|---|---|
token 1 | 250 | 250 | 60 | ~7500 |
token 2 | 250 | 250 | 60 | ~7500 |
Informazioni sul controllo di accesso ai token di firma di accesso condiviso
I token di firma di accesso condiviso usano il controllo degli accessi in base al ruolo per controllare l'accesso all'API REST. Quando si crea un token di firma di accesso condiviso, all'identità gestita dei prerequisiti nell'account mappa viene assegnato un ruolo controllo degli accessi in base al ruolo di Azure che concede l'accesso a azioni API REST specifiche. Vedere Selezione di una definizione di ruolo per determinare le API consentite dall'applicazione.
Se si vuole assegnare l'accesso temporaneo e rimuovere l'accesso per prima della scadenza del token di firma di accesso condiviso, revocare il token. Altri motivi per revocare l'accesso possono essere se il token viene distribuito con Azure Maps Data Contributor
l'assegnazione di ruolo in modo involontario e chiunque abbia il token di firma di accesso condiviso può essere in grado di leggere e scrivere dati in Mappe di Azure API REST che potrebbero esporre dati sensibili o costi finanziari imprevisti dall'utilizzo.
sono disponibili due opzioni per revocare l'accesso per i token di firma di accesso condiviso:
- Rigenerare la chiave usata dal token di firma di accesso condiviso o dalla chiave secondaria dell'account della mappa.
- Rimuovere l'assegnazione di ruolo per l'identità gestita nell'account mappa associato.
Avviso
Eliminando un'identità gestita usata da un token di firma di accesso condiviso o revocando il controllo di accesso dell'identità gestita, le istanze dell'applicazione usano il token di firma di accesso condiviso e l'identità gestita per restituire 401 Unauthorized
intenzionalmente o 403 Forbidden
da Mappe di Azure API REST che creeranno interruzioni dell'applicazione.
Per evitare interruzioni:
- Aggiungere una seconda identità gestita all'account mappa e concedere alla nuova identità gestita l'assegnazione di ruolo corretta.
- Creare un token di firma di accesso condiviso usando
secondaryKey
o un'identità gestita diversa da quella precedente, comesigningKey
e distribuire il nuovo token di firma di accesso condiviso all'applicazione. - Rigenerare la chiave primaria, rimuovere l'identità gestita dall'account e rimuovere l'assegnazione di ruolo per l'identità gestita.
Creare token di firma di accesso condiviso
Per creare token di firma di accesso condiviso, è necessario avere Contributor
accesso al ruolo sia per gestire gli account Mappe di Azure che per le identità assegnate dall'utente nella sottoscrizione di Azure.
Importante
Gli account Mappe di Azure esistenti creati nella posizione global
di Azure non supportano le identità gestite.
In primo luogo, è necessario creare un'identità gestita assegnata dall'utente nella stessa posizione dell'account Mappe di Azure.
Suggerimento
È consigliabile usare la stessa posizione sia per l'identità gestita che per l'account Mappe di Azure.
Dopo aver creato un'identità gestita, è possibile creare o aggiornare l'account Mappe di Azure e collegarlo. Per altre informazioni, vedere Gestire l'account Mappe di Azure.
Dopo aver creato o aggiornato correttamente l'account con l'identità gestita; assegnare il controllo degli accessi in base al ruolo per l'identità gestita a un ruolo dati Mappe di Azure nell'ambito dell'account. Ciò consente di assegnare all'identità gestita l'accesso all'API REST Mappe di Azure per l'account della mappa.
Creare quindi un token di firma di accesso condiviso usando gli strumenti di Azure Management SDK, elencare l'operazione di firma di accesso condiviso nell'API di gestione account o la pagina portale di Azure firma di accesso condiviso della risorsa dell'account mappa.
Parametri del token di firma di accesso condiviso:
Nome parametro | Valore di esempio | Descrizione |
---|---|---|
signingKey | primaryKey |
Obbligatorio, il valore di enumerazione stringa per signingKey o primaryKey secondaryKey l'identità gestita viene usato per creare la firma della firma di accesso condiviso. |
principalId | <GUID> |
Obbligatorio, principalId è l'ID oggetto (entità) dell'identità gestita assegnata dall'utente collegata all'account della mappa. |
regions | [ "eastus", "westus2", "westcentralus" ] |
Facoltativo, il valore predefinito è null . Le aree controllano le aree che il token di firma di accesso condiviso può essere usato nell'API del piano dati REST Mappe di Azure. L'omissione del parametro regions consente l'uso del token di firma di accesso condiviso senza vincoli. Se usato in combinazione con un endpoint geografico del piano dati Mappe di Azure, ad us.atlas.microsoft.com esempio e eu.atlas.microsoft.com consente all'applicazione di controllare l'utilizzo con l'area geografica specificata. In questo modo è possibile prevenire l'utilizzo in altre aree geografiche. |
maxRatePerSecond | 500 | Obbligatorio, richiesta massima approssimativa al secondo specificata a cui viene concesso il token di firma di accesso condiviso. Una volta raggiunto il limite, una velocità effettiva maggiore è limitata con il codice 429 (TooManyRequests) di stato HTTP . |
Avvio | 2021-05-24T10:42:03.1567373Z |
Obbligatorio, una data UTC che specifica la data e l'ora in cui il token diventa attivo. |
expiry | 2021-05-24T11:42:03.1567373Z |
Obbligatorio, una data UTC che specifica la data e l'ora di scadenza del token. La durata tra inizio e scadenza non può essere superiore a 24 ore. |
Configurazione dell'applicazione con token di firma di accesso condiviso
Dopo che l'applicazione riceve un token di firma di accesso condiviso, l'SDK di Mappe di Azure e/o le applicazioni inviano una richiesta HTTPS con l'intestazione HTTP necessaria seguente, oltre ad altre intestazioni HTTP dell'API REST:
Nome intestazione | Valore |
---|---|
Autorizzazione | jwt-sas eyJ0e....HNIVN |
Nota
jwt-sas
è lo schema di autenticazione per indicare l'uso del token di firma di accesso condiviso. Non includere x-ms-client-id
o altre intestazioni di autorizzazione o subscription-key
parametri di stringa di query.
Condivisione di risorse tra le origini (CORS)
CORS è un protocollo HTTP che consente a un'applicazione Web in esecuzione in un dominio di accedere alle risorse in un altro dominio. Nei browser Web è implementata una restrizione di sicurezza nota come criterio della stessa origine che impedisce a una pagina Web di chiamare API in un dominio differente. CORS offre una modalità sicura per consentire a un dominio (quello di origine) di chiamare API in un altro dominio. Usando la risorsa dell'account Mappe di Azure, è possibile configurare le origini autorizzate ad accedere all'API REST Mappe di Azure dalle applicazioni.
Importante
CORS non è un meccanismo di autorizzazione. Qualsiasi richiesta inviata a un account mappa usando l'API REST, quando CORS è abilitata, richiede anche uno schema di autenticazione dell'account mappa valido, ad esempio chiave condivisa, ID Microsoft Entra o token di firma di accesso condiviso.
CORS è supportato per tutti i piani tariffari dell'account mappa, gli endpoint del piano dati e le posizioni.
Prerequisiti
Per impedire l'esecuzione di codice dannoso nel client, i browser moderni bloccano le richieste da applicazioni Web alle risorse in esecuzione in un dominio separato.
- Se non si ha familiarità con CORS, vedere Condivisione di risorse tra le origini (CORS), consente a un'intestazione
Access-Control-Allow-Origin
di dichiarare quali origini sono autorizzate a chiamare gli endpoint di un account Mappe di Azure. Il protocollo CORS non è specifico per Mappe di Azure.
Richieste CORS
Una richiesta CORS proveniente da un dominio di origine può essere costituita da due richieste distinte:
Una richiesta preliminare, che esegue query sulle restrizioni di CORS imposte dal servizio. La richiesta preliminare è obbligatoria, a meno che la richiesta non sia un metodo standard GET, HEAD, POST o richieste che contengono
Authorization
l'intestazione della richiesta.La richiesta effettiva, effettuata alla risorsa desiderata.
Richiesta preliminare
La richiesta preliminare viene eseguita non solo come misura di sicurezza per garantire che il server comprenda il metodo e le intestazioni inviate nella richiesta effettiva e che il server conosca e consideri attendibile l'origine della richiesta, ma esegue anche una query sulle restrizioni CORS stabilite per l'account mappa. Dal Web browser (o da altro agente utente) viene inviata una richiesta OPTIONS che include le intestazioni della richiesta, il metodo e il dominio di origine. Il servizio account map tenta di recuperare le regole CORS se l'autenticazione dell'account è possibile tramite il protocollo preliminare CORS.
Se l'autenticazione non è possibile, il servizio mappe valuta un set preconfigurato di regole CORS che specificano quali domini di origine, metodi di richiesta e intestazioni di richiesta possono essere specificati in una richiesta effettiva sul servizio mappe. Per impostazione predefinita, un account mappe è configurato per consentire a tutte le origini di abilitare l'integrazione senza problemi nei Web browser.
Il servizio risponde alla richiesta preliminare con le intestazioni di Controllo di accesso necessarie se vengono soddisfatti i criteri seguenti:
- La richiesta OPTIONS contiene le intestazioni CORS necessarie (intestazioni Origin e Access-Control-Request-Method)
- L'autenticazione è riuscita e per l'account che corrisponde alla richiesta preliminare è abilitata una regola CORS.
- L'autenticazione è stata ignorata a causa di intestazioni di richiesta obbligatorie
Authorization
che non possono essere specificate nella richiesta preliminare.
Quando la richiesta preliminare ha esito positivo, il servizio risponde con il codice 200 (OK)
di stato e include le intestazioni di Controllo di accesso necessarie nella risposta.
Il servizio rifiuta le richieste preliminari se si verificano le condizioni seguenti:
- Se la richiesta OPTIONS non contiene le intestazioni CORS necessarie (intestazioni Origin e Access-Control-Request-Method), il servizio risponde con il codice
400 (Bad request)
di stato . - Se l'autenticazione ha avuto esito positivo nella richiesta preliminare e nessuna regola CORS corrisponde alla richiesta preliminare, il servizio risponde con il codice
403 (Forbidden)
di stato . Questo problema può verificarsi se la regola CORS è configurata per accettare un'origine che non corrisponde all'intestazione della richiesta di origine client del browser corrente.
Nota
Una richiesta preliminare viene valutata rispetto al servizio e non alla risorsa richiesta. Il proprietario dell'account deve avere abilitato CORS impostando le proprietà dell'account appropriate affinché la richiesta abbia esito positivo.
Richiesta effettiva
Dopo che la richiesta preliminare viene accettata e la risposta viene restituita, il browser invia la richiesta effettiva al servizio mappe. Il browser nega immediatamente la richiesta effettiva se la richiesta preliminare viene rifiutata.
La richiesta effettiva viene considerata come una normale richiesta per il servizio map. La presenza dell'intestazione Origin
indica che la richiesta è una richiesta CORS e il servizio convalida quindi rispetto alle regole CORS. Se viene rilevata una corrispondenza, le intestazioni Access-Control vengono aggiunte alla risposta e inviate di nuovo al client. Se non viene trovata una corrispondenza, la risposta restituisce un 403 (Forbidden)
valore che indica un errore di origine CORS.
Abilitare i criteri CORS
Quando viene creato o aggiornato un account map, le relative proprietà specificano le origini consentite da configurare. È possibile impostare una regola CORS sulle proprietà dell'account Mappe di Azure tramite Mappe di Azure Management SDK, l'API REST di gestione Mappe di Azure e il portale. Dopo aver impostato la regola CORS per il servizio, viene valutata una richiesta autorizzata correttamente al servizio da un dominio diverso per determinare se è consentita in base alla regola specificata. Ad esempio:
{
"location": "eastus",
"sku": {
"name": "G2"
},
"kind": "Gen2",
"properties": {
"cors": {
"corsRules": [
{
"allowedOrigins": [
"https://www.azure.com",
"https://www.microsoft.com"
]
}
]
}
}
}
È possibile specificare una sola regola CORS con il relativo elenco di origini consentite. Ogni origine consente di effettuare la richiesta HTTP per Mappe di Azure'API REST nel Web browser dell'origine specificata.
Rimuovere i criteri CORS
È possibile rimuovere CORS:
- Manualmente nel portale di Azure
- A livello di codice tramite:
Suggerimento
Se si usa l'API REST di gestione Mappe di Azure, usare PUT
o PATCH
con un elenco vuoto corsRule
nel corpo della richiesta.
{
"location": "eastus",
"sku": {
"name": "G2"
},
"kind": "Gen2",
"properties": {
"cors": {
"corsRules": []
}
}
}
}
Informazioni sulle transazioni di fatturazione
Mappe di Azure non conta le transazioni di fatturazione per:
- Codici di stato HTTP 5xx
- 401 (Non autorizzato)
- 403 (accesso negato)
- 408 (timeout)
- 429 (TooManyRequests)
- Richieste preliminari CORS
Per altre informazioni sulle transazioni di fatturazione e altre informazioni sui prezzi di Mappe di Azure, vedere Mappe di Azure prezzi.
Passaggi successivi
Per altre informazioni sulle procedure consigliate per la sicurezza, vedere:
Per altre informazioni sull'autenticazione di un'applicazione con Microsoft Entra ID e Mappe di Azure, vedere:
Per altre informazioni sull'autenticazione del controllo Mappe di Azure con Microsoft Entra ID, vedere: