Erlauben des nicht authentifizierten Gastzugriffs auf Ihre Anwendung mit Amazon Cognito - Amazon Location Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Erlauben des nicht authentifizierten Gastzugriffs auf Ihre Anwendung mit Amazon Cognito

Sie können die Amazon Cognito-Authentifizierung als Alternative zur direkten Verwendung von AWS Identity and Access Management (IAM) sowohl mit Frontend-SDKs als auch mit direkten HTTPS-Anfragen verwenden.

Sie können diese Form der Authentifizierung aus folgenden Gründen verwenden:

  • Nicht authentifizierte Benutzer – Wenn Sie eine Website mit anonymen Benutzern haben, können Sie Amazon Cognito-Identitätspools verwenden. Weitere Informationen finden Sie im Abschnitt auf Erlauben des nicht authentifizierten Gastzugriffs auf Ihre Anwendung mit Amazon Cognito.

  • Ihre eigene Authentifizierung – Wenn Sie Ihren eigenen Authentifizierungsprozess verwenden oder mehrere Authentifizierungsmethoden kombinieren möchten, können Sie Amazon Cognito Federated Identities verwenden. Weitere Informationen finden Sie unter Erste Schritte mit Verbundidentitäten im Amazon Cognito-Entwicklerhandbuch.

Amazon Cognito bietet Authentifizierung, Autorisierung und Benutzerverwaltung für Web- und mobile Apps. Sie können nicht authentifizierte Amazon Cognito-Identitätspools mit Amazon Location verwenden, um Anwendungen zu ermöglichen, temporäre, begrenzte AWS Anmeldeinformationen abzurufen.

Weitere Informationen finden Sie unter Erste Schritte mit Benutzerpools im Amazon Cognito-Entwicklerhandbuch.

Anmerkung

Für Entwickler von Mobilgeräten stellt Amazon Location SDKs für die mobile Authentifizierung sowohl für iOS als auch für Android bereit. Weitere Informationen finden Sie in den folgenden Github-Repositorys:

Amazon-Cognito-Identitätspool erstellen

Sie können Amazon Cognito-Identitätspools erstellen, um nicht authentifizierten Gastzugriff auf Ihre Anwendung über die Amazon Cognito-Konsole, die AWS CLIoder die Amazon Cognito-APIs zu ermöglichen.

Wichtig

Der von Ihnen erstellte Pool muss sich in demselben AWS-Konto und derselben AWS Region befinden wie die von Ihnen verwendeten Amazon Location Service-Ressourcen.

Sie können IAM-Richtlinien, die nicht authentifizierten Identitätsrollen zugeordnet sind, mit den folgenden Aktionen verwenden:

  • 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

Das Einschließen anderer Amazon Location-Aktionen hat keine Auswirkungen und nicht authentifizierte Identitäten können sie nicht aufrufen.

So erstellen Sie einen Identitäten-Pool mit der Amazon Cognito-Konsole

  1. Melden Sie sich bei der Amazon-Cognito-Konsole an.

  2. Klicken Sie auf Manage Identity Pools (Identitäten-Pools verwalten).

  3. Wählen Sie Neuen Identitäten-Pool erstellen und geben Sie dann einen Namen für Ihren Identitäten-Pool ein.

  4. Wählen Sie im Abschnitt Einklappbare nicht authentifizierte Identitäten die Option Zugriff auf nicht authentifizierte Identitäten aktivieren aus.

  5. Wählen Sie Pool erstellen.

  6. Wählen Sie aus, welche IAM-Rollen Sie mit Ihrem Identitäten-Pool verwenden möchten.

  7. Erweitern Sie Details anzeigen.

  8. Geben Sie unter Nicht authentifizierte Identitäten einen Rollennamen ein.

  9. Erweitern Sie den Abschnitt Richtliniendokument anzeigen und wählen Sie dann Bearbeiten, um Ihre Richtlinie hinzuzufügen.

  10. Fügen Sie Ihre Richtlinie hinzu, um Zugriff auf Ihre -Ressourcen zu gewähren.

    Im Folgenden finden Sie Richtlinienbeispiele für Karten, Orte, Tracker und Routen. Um die Beispiele für Ihre eigene Richtlinie zu verwenden, ersetzen Sie die Platzhalter region und accountID:

    Maps policy example

    Die folgende Richtlinie gewährt schreibgeschützten Zugriff auf eine Kartenressource mit dem Namen 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" } ] }

    Durch das Hinzufügen einer übereinstimmenden IAM-Bedingung aws:referer können Sie den Browserzugriff auf Ihre Ressourcen auf eine Liste von URLs oder URL-Präfixen beschränken. Das folgende Beispiel erlaubt den Zugriff auf eine Kartenressource namens nur RasterEsriImagery von der Website ausexample.com:

    Warnung

    Obwohl den Zugriff einschränken aws:referer kann, handelt es sich nicht um einen sicheren Mechanismus. Ein öffentlich bekannter Referer-Header-Wert sollte möglichst nicht eingeschlossen werden. Nicht autorisierte Parteien können mit modifizierten oder benutzerdefinierten Browsern einen beliebigen aws:referer-Wert ihrer Wahl bereitstellen. Daher aws:referer sollte nicht verwendet werden, um Unbefugte daran zu hindern, direkte AWS Anfragen zu stellen. Die Funktion wird nur bereitgestellt, damit Kunden ihre digitalen, in Amazon S3 gespeicherten Inhalte vor der Referenzierung auf nicht autorisierte Drittanbieter-Websites schützen können. Weitere Informationen finden Sie unter AWS: Referer.

    { "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/*" ] } } } ] }

    Wenn Sie Tangram verwenden, um eine Karte anzuzeigen, verwendet es nicht die Stildeskriptoren, Glyphs oder -Sprites, die von der Maps-API zurückgegeben werden. Stattdessen wird sie konfiguriert, indem auf eine ZIP-Datei verwiesen wird, die Stilregeln und erforderliche Komponenten enthält. Die folgende Richtlinie gewährt schreibgeschützten Zugriff auf eine Kartenressource mit dem Namen ExampleMap für die -GetMapTileOperation.

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

    Die folgende Richtlinie gewährt schreibgeschützten Zugriff auf eine Ortsindexressource mit dem Namen , ExamplePlaceIndex um nach Orten nach Text oder Positionen zu suchen.

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

    Wenn Sie eine IAM-Bedingung hinzufügen, die übereinstimmt, aws:referer können Sie den Browserzugriff auf Ihre Ressourcen auf eine Liste von URLs oder URL-Präfixen beschränken. Im folgenden Beispiel wird der Zugriff auf eine Ortsindexressource mit dem Namen ExamplePlaceIndex von allen verweisenden Websites mit Ausnahme von verweigertexample.com.

    Warnung

    Obwohl den Zugriff einschränken aws:referer kann, handelt es sich nicht um einen sicheren Mechanismus. Ein öffentlich bekannter Referer-Header-Wert sollte möglichst nicht eingeschlossen werden. Nicht autorisierte Parteien können mit modifizierten oder benutzerdefinierten Browsern einen beliebigen aws:referer-Wert ihrer Wahl bereitstellen. Daher aws:referer sollte nicht verwendet werden, um Unbefugte daran zu hindern, direkte AWS Anfragen zu stellen. Die Funktion wird nur bereitgestellt, damit Kunden ihre digitalen, in Amazon S3 gespeicherten Inhalte vor der Referenzierung auf nicht autorisierte Drittanbieter-Websites schützen können. Weitere Informationen finden Sie unter AWS: Referer.

    { "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

    Die folgende Richtlinie gewährt Zugriff auf eine Tracker-Ressource mit dem Namen , um Gerätepositionen ExampleTracker zu aktualisieren.

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

    Wenn Sie eine IAM-Bedingung hinzufügen, die übereinstimmt, aws:referer können Sie den Browserzugriff auf Ihre Ressourcen auf eine Liste von URLs oder URL-Präfixen beschränken. Im folgenden Beispiel wird der Zugriff auf eine Tracker-Ressource mit dem Namen ExampleTracker von allen verweisenden Websites mit Ausnahme von verweigertexample.com.

    Warnung

    Obwohl den Zugriff einschränken aws:referer kann, handelt es sich nicht um einen sicheren Mechanismus. Ein öffentlich bekannter Referer-Header-Wert sollte möglichst nicht eingeschlossen werden. Nicht autorisierte Parteien können mit modifizierten oder benutzerdefinierten Browsern einen beliebigen aws:referer-Wert ihrer Wahl bereitstellen. Daher aws:referer sollte nicht verwendet werden, um Unbefugte daran zu hindern, direkte AWS Anfragen zu stellen. Die Funktion wird nur bereitgestellt, damit Kunden ihre digitalen, in Amazon S3 gespeicherten Inhalte vor der Referenzierung auf nicht autorisierte Drittanbieter-Websites schützen können. Weitere Informationen finden Sie unter AWS: Referer .

    { "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

    Die folgende Richtlinie gewährt Zugriff auf eine Routenrechner-Ressource namens , um eine Route ExampleCalculator zu berechnen.

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

    Wenn Sie eine IAM-Bedingung hinzufügen, die übereinstimmt, aws:referer können Sie den Browserzugriff auf Ihre Ressourcen auf eine Liste von URLs oder URL-Präfixen beschränken. Das folgende Beispiel verweigert den Zugriff auf einen Routenrechner mit dem Namen ExampleCalculator von allen verweisenden Websites mit Ausnahme von example.com.

    Warnung

    Obwohl den Zugriff einschränken aws:referer kann, handelt es sich nicht um einen sicheren Mechanismus. Ein öffentlich bekannter Referer-Header-Wert sollte möglichst nicht eingeschlossen werden. Nicht autorisierte Parteien können mit modifizierten oder benutzerdefinierten Browsern einen beliebigen aws:referer-Wert ihrer Wahl bereitstellen. Daher aws:referer sollte nicht verwendet werden, um Unbefugte daran zu hindern, direkte AWS Anfragen zu stellen. Die Funktion wird nur bereitgestellt, damit Kunden ihre digitalen, in Amazon S3 gespeicherten Inhalte vor der Referenzierung auf nicht autorisierte Drittanbieter-Websites schützen können. Weitere Informationen finden Sie unter AWS: Referer .

    { "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/*" ] } } } ] }
    Anmerkung

    Während nicht authentifizierte Identitätspools für die Offenlegung auf ungesicherten Websites vorgesehen sind, beachten Sie, dass sie gegen standardmäßige, zeitlich begrenzte AWS Anmeldeinformationen ausgetauscht werden.

    Es ist wichtig, die IAM-Rollen, die nicht authentifizierten Identitätspools zugeordnet sind, entsprechend einzugrenzen.

  11. Wählen Sie Zulassen, um Ihre Identitätspools zu erstellen.

Der resultierende Identitätspool folgt der Syntax <region>:<GUID>.

Beispielsweise:

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

Weitere Beispiele für Amazon Location finden Sie unter Beispiele für identitätsbasierte Richtlinien für Amazon Location Service.

Verwenden der Amazon Cognito-Identitätspools in JavaScript

Im folgenden Beispiel wird der von Ihnen erstellte nicht authentifizierte Identitätspool gegen Anmeldeinformationen ausgetauscht, die dann zum Abrufen des Stildeskriptors für Ihre Kartenressource verwendet werdenExampleMap.

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());
Anmerkung

Abrufen von Anmeldeinformationen von nicht authentifizierten Identitäten sind eine Stunde lang gültig.

Im Folgenden finden Sie ein Beispiel für eine Funktion, die Anmeldeinformationen automatisch erneuert, bevor sie ablaufen.

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

Um diese Arbeit zu vereinfachen, können Sie den Amazon Location verwendenJavaScript Authentifizierungshelfer. Dies ersetzt sowohl das Abrufen der Anmeldeinformationen als auch deren Aktualisierung. In diesem Beispiel wird das AWS SDK für JavaScript v3 verwendet.

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));

Nächste Schritte