Consenti l'accesso degli ospiti non autenticati alla tua applicazione utilizzando Amazon Cognito - Servizio di posizione Amazon

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Consenti l'accesso degli ospiti non autenticati alla tua applicazione utilizzando Amazon Cognito

Puoi utilizzare l'autenticazione Amazon Cognito come alternativa all'utilizzo diretto AWS Identity and Access Management (IAM) con richieste front-end SDKs e diretteHTTPS.

Potresti voler utilizzare questa forma di autenticazione per i seguenti motivi:

  • Utenti non autenticati: se disponi di un sito Web con utenti anonimi, puoi utilizzare i pool di identità di Amazon Cognito. Per ulteriori informazioni, consulta la sezione su. Consenti l'accesso degli ospiti non autenticati alla tua applicazione utilizzando Amazon Cognito

  • Autenticazione personalizzata: se desideri utilizzare il tuo processo di autenticazione o combinare più metodi di autenticazione, puoi utilizzare Amazon Cognito Federated Identities. Per ulteriori informazioni, consulta Getting Started with Federated Identities nella Amazon Cognito Developer Guide.

Amazon Cognito fornisce autenticazione, autorizzazione e gestione degli utenti per app Web e mobili. Puoi utilizzare i pool di identità non autenticati di Amazon Cognito con Amazon Location per consentire alle applicazioni di recuperare credenziali temporanee e limitate. AWS

Per ulteriori informazioni, consulta Getting Started with User Pools nella Amazon Cognito Developer Guide.

Nota

Per gli sviluppatori di dispositivi mobili, Amazon Location fornisce l'autenticazione mobile sia SDKs per iOS che per Android, consulta i seguenti GitHub repository per maggiori informazioni:

Creazione di un pool di identità in Amazon Cognito

Puoi creare pool di identità Amazon Cognito per consentire l'accesso degli ospiti non autenticati alla tua applicazione tramite la console Amazon Cognito, o AWS CLI Amazon Cognito. APIs

Importante

Il pool che crei deve trovarsi nella stessa Account AWS AWS regione delle risorse di Amazon Location Service che stai utilizzando.

Puoi utilizzare IAM le policy associate a ruoli di identità non autenticati con le seguenti azioni:

  • geo:GetMap*

  • geo:SearchPlaceIndex*

  • geo:GetPlace

  • geo:CalculateRoute*

  • geo:GetGeofence

  • geo:ListGeofences

  • geo:PutGeofence

  • geo:BatchDeleteGeofence

  • geo:BatchPutGeofence

  • geo:BatchEvaluateGeofences

  • geo:GetDevicePosition*

  • geo:ListDevicePositions

  • geo:BatchDeleteDevicePositionHistory

  • geo:BatchGetDevicePosition

  • geo:BatchUpdateDevicePosition

L'inclusione di altre azioni di Amazon Location non avrà alcun effetto e le identità non autenticate non saranno in grado di chiamarle.

Per creare un pool di identità utilizzando la console Amazon Cognito

  1. Passa alla console Amazon Cognito.

  2. Scegli Manage Identity Pools (Gestisci pool di identità).

  3. Scegli Crea nuovo pool di identità, quindi inserisci un nome per il tuo pool di identità.

  4. Dalla sezione pieghevole Identità non autenticate, scegli Abilita l'accesso alle identità non autenticate.

  5. Seleziona Create Pool (Crea pool).

  6. Scegli quali IAM ruoli vuoi usare con il tuo pool di identità.

  7. Espandi Visualizza dettagli.

  8. In Identità non autenticate, inserisci il nome del ruolo.

  9. Espandi la sezione Visualizza documento di policy, quindi scegli Modifica per aggiungere la tua policy.

  10. Aggiungi la tua politica per concedere l'accesso alle tue risorse.

    Di seguito sono riportati alcuni esempi di policy per Maps, Places, Tracker e Routes. Per utilizzare gli esempi per la tua politica, sostituisci il region e accountID segnaposti:

    Maps policy example

    La seguente politica concede l'accesso in sola lettura a una risorsa cartografica denominata ExampleMap.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "MapsReadOnly", "Effect": "Allow", "Action": [ "geo:GetMapStyleDescriptor", "geo:GetMapGlyphs", "geo:GetMapSprites", "geo:GetMapTile" ], "Resource": "arn:aws:geo:region:accountID:map/ExampleMap" } ] }

    L'aggiunta di una IAMcondizione corrispondente aws:referer consente di limitare l'accesso del browser alle risorse a un elenco di URLs o prefissi. URL L'esempio seguente consente l'accesso a una risorsa cartografica denominata solo RasterEsriImagery dal sito Web: example.com

    avvertimento

    Sebbene aws:referer possa limitare l'accesso, non è un meccanismo di sicurezza. È pericoloso includere un valore dell'intestazione del referrer pubblicamente noto. Parti non autorizzate possono utilizzare browser modificati o personalizzati per fornire qualsiasi valore aws:referer scelto. Di conseguenza, non si dovrebbe utilizzare aws:referer per evitare che parti non autorizzate effettuino richieste AWS dirette. È disponibile solo per consentire ai clienti di proteggere i propri contenuti digitali, come i contenuti memorizzati su Amazon S3, da riferimenti su siti di terze parti non autorizzate. Per ulteriori informazioni, vedi:referer AWS.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "geo:GetMap*", "Resource": "arn:aws:geo:us-west-2:111122223333:map/RasterEsriImagery", "Condition": { "StringLike": { "aws:referer": [ "https://example.com/*", "https://www.example.com/*" ] } } } ] }

    Se usi Tangram per visualizzare una mappa, non utilizza i descrittori di stile, i glifi o gli sprite restituiti dalle Mappe. API Viene invece configurato puntando a un file.zip che contiene le regole di stile e le risorse necessarie. La seguente politica concede l'accesso in sola lettura a una risorsa cartografica denominata ExampleMap per l'operazione. GetMapTile

    { "Version": "2012-10-17", "Statement": [ { "Sid": "MapsReadOnly", "Effect": "Allow", "Action": [ "geo:GetMapTile" ], "Resource": "arn:aws:geo:region:accountID:map/ExampleMap" } ] }
    Places policy example

    La seguente politica concede l'accesso in sola lettura a una risorsa dell'indice dei luoghi denominata ExamplePlaceIndex per cercare luoghi in base al testo o alle posizioni.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "PlacesReadOnly", "Effect": "Allow", "Action": [ "geo:SearchPlaceIndex*", "geo:GetPlace" ], "Resource": "arn:aws:geo:region:accountID:place-index/ExamplePlaceIndex" } ] }

    L'aggiunta di una IAMcondizione corrispondente aws:referer consente di limitare l'accesso del browser alle risorse a un elenco di URLs o URL prefissi. L'esempio seguente nega l'accesso a una risorsa dell'indice dei luoghi denominata ExamplePlaceIndex da tutti i siti Web di riferimento, tranneexample.com.

    avvertimento

    Sebbene aws:referer possa limitare l'accesso, non è un meccanismo di sicurezza. È pericoloso includere un valore dell'intestazione del referrer pubblicamente noto. Parti non autorizzate possono utilizzare browser modificati o personalizzati per fornire qualsiasi valore aws:referer scelto. Di conseguenza, non si dovrebbe utilizzare aws:referer per evitare che parti non autorizzate effettuino richieste AWS dirette. È disponibile solo per consentire ai clienti di proteggere i propri contenuti digitali, come i contenuti memorizzati su Amazon S3, da riferimenti su siti di terze parti non autorizzate. Per ulteriori informazioni, vedi:referrer AWS.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "geo:*", "Resource": "arn:aws:geo:us-west-2:111122223333:place-index/ExamplePlaceIndex", "Condition": { "StringLike": { "aws:referer": [ "https://example.com/*", "https://www.example.com/*" ] } } } ] }
    Trackers policy example

    La seguente politica consente l'accesso a una risorsa tracker denominata ExampleTracker per aggiornare le posizioni dei dispositivi.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "UpdateDevicePosition", "Effect": "Allow", "Action": [ "geo:BatchUpdateDevicePosition" ], "Resource": "arn:aws:geo:region:accountID:tracker/ExampleTracker" } ] }

    L'aggiunta di una IAMcondizione corrispondente aws:referrer consente di limitare l'accesso del browser alle risorse a un elenco di URLs o URL prefissi. L'esempio seguente nega l'accesso a una risorsa tracker denominata ExampleTracker da tutti i siti Web di riferimento, tranne. example.com

    avvertimento

    Sebbene aws:referrer possa limitare l'accesso, non è un meccanismo di sicurezza. È pericoloso includere un valore di intestazione del referrer noto pubblicamente. Parti non autorizzate possono utilizzare browser modificati o personalizzati per fornire qualsiasi valore aws:referrer scelto. Di conseguenza, non si dovrebbe utilizzare aws:referrer per evitare che parti non autorizzate effettuino richieste AWS dirette. È disponibile solo per consentire ai clienti di proteggere i propri contenuti digitali, come i contenuti memorizzati su Amazon S3, da riferimenti su siti di terze parti non autorizzate. Per ulteriori informazioni, vedi:referrer.AWS

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "geo:GetDevice*", "Resource": "arn:aws:geo:us-west-2:111122223333:tracker/ExampleTracker", "Condition": { "StringLike": { "aws:referer": [ "https://example.com/*", "https://www.example.com/*" ] } } } ] }
    Routes policy example

    La seguente politica consente l'accesso a una risorsa di calcolo del percorso denominata ExampleCalculator per calcolare un percorso.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "RoutesReadOnly", "Effect": "Allow", "Action": [ "geo:CalculateRoute" ], "Resource": "arn:aws:geo:region:accountID:route-calculator/ExampleCalculator" } ] }

    L'aggiunta di una IAMcondizione corrispondente aws:referrer consente di limitare l'accesso del browser alle risorse a un elenco di URLs o URL prefissi. L'esempio seguente nega l'accesso a un calcolatore di percorso denominato ExampleCalculator da tutti i siti Web di riferimento, tranne. example.com

    avvertimento

    Sebbene aws:referrer possa limitare l'accesso, non è un meccanismo di sicurezza. È pericoloso includere un valore di intestazione del referrer noto pubblicamente. Parti non autorizzate possono utilizzare browser modificati o personalizzati per fornire qualsiasi valore aws:referrer scelto. Di conseguenza, non si dovrebbe utilizzare aws:referrer per evitare che parti non autorizzate effettuino richieste AWS dirette. È disponibile solo per consentire ai clienti di proteggere i propri contenuti digitali, come i contenuti memorizzati su Amazon S3, da riferimenti su siti di terze parti non autorizzate. Per ulteriori informazioni, vedi:referrer.AWS

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "geo:*", "Resource": "arn:aws:geo:us-west-2:111122223333:route-calculator/ExampleCalculator", "Condition": { "StringLike": { "aws:referer": [ "https://example.com/*", "https://www.example.com/*" ] } } } ] }
    Nota

    Sebbene i pool di identità non autenticati siano destinati all'esposizione su siti Internet non protetti, tieni presente che verranno scambiati con credenziali standard a tempo limitato. AWS

    È importante definire in modo appropriato i IAM ruoli associati ai pool di identità non autenticati.

  11. Scegli Consenti per creare i tuoi pool di identità.

Il pool di identità risultante segue la sintassi <region>:<GUID>.

Per esempio:

us-east-1:1sample4-5678-90ef-aaaa-1234abcd56ef

Per altri esempi di policy specifici per Amazon Location, consultaEsempi di policy basate sull'identità per Amazon Location Service.

Usa i pool di identità di Amazon Cognito in JavaScript

L'esempio seguente scambia il pool di identità non autenticato che hai creato con credenziali che vengono poi utilizzate per recuperare il descrittore di stile per la risorsa della mappa ExampleMap.

const AWS = require("aws-sdk"); const credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: "<identity pool ID>" // for example, us-east-1:1sample4-5678-90ef-aaaa-1234abcd56ef }); const client = new AWS.Location({ credentials, region: AWS.config.region || "<region>" }); console.log(await client.getMapStyleDescriptor("ExampleMap").promise());
Nota

Le credenziali recuperate da identità non autenticate sono valide per un'ora.

Di seguito è riportato un esempio di funzione che rinnova automaticamente le credenziali prima della scadenza.

async function refreshCredentials() { await credentials.refreshPromise(); // schedule the next credential refresh when they're about to expire setTimeout(refreshCredentials, credentials.expireTime - new Date()); }

Per semplificare questo lavoro, puoi utilizzare Amazon LocationJavaScript Aiutante di autenticazione. Questo serve sia per ottenere le credenziali che per aggiornarle. Questo esempio utilizza AWS SDK for JavaScript v3.

import { LocationClient, GetMapStyleDescriptorCommand } from "@aws-sdk/client-location"; import { withIdentityPoolId } from "@aws/amazon-location-utilities-auth-helper"; const identityPoolId = "<identity pool ID>"; // for example, us-east-1:1sample4-5678-90ef-aaaa-1234abcd56ef // Create an authentication helper instance using credentials from Cognito const authHelper = await withIdentityPoolId(identityPoolId); const client = new LocationClient({ region: "<region>", // The region containing both the identity pool and tracker resource ...authHelper.getLocationClientConfig(), // Provides configuration required to make requests to Amazon Location }); const input = { MapName: "ExampleMap", }; const command = new GetMapStyleDescriptorCommand(input); console.log(await client.send(command));

Passaggi successivi

  • Per modificare i tuoi ruoli, vai alla IAMconsole.

  • Per gestire i tuoi pool di identità, accedi alla console Amazon Cognito.