Autoriser l'accès invité non authentifié à votre application à l'aide d'Amazon Cognito - Amazon Location Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Autoriser l'accès invité non authentifié à votre application à l'aide d'Amazon Cognito

Vous pouvez utiliser l'authentification Amazon Cognito au lieu d'utiliser directement AWS Identity and Access Management (IAM) pour les requêtes frontales SDKs et directesHTTPS.

Vous souhaiterez peut-être utiliser cette forme d'authentification pour les raisons suivantes :

  • Utilisateurs non authentifiés : si votre site Web comporte des utilisateurs anonymes, vous pouvez utiliser les groupes d'identités Amazon Cognito. Pour plus d'informations, consultez la section surAutoriser l'accès invité non authentifié à votre application à l'aide d'Amazon Cognito.

  • Votre propre authentification — Si vous souhaitez utiliser votre propre processus d'authentification ou combiner plusieurs méthodes d'authentification, vous pouvez utiliser les identités fédérées Amazon Cognito. Pour plus d'informations, consultez Getting Started with Federated Identities dans le manuel Amazon Cognito Developer Guide.

Amazon Cognito fournit des fonctionnalités d'authentification, d'autorisation et de gestion des utilisateurs pour les applications Web et mobiles. Vous pouvez utiliser les pools d'identités non authentifiés Amazon Cognito avec Amazon Location pour permettre aux applications de récupérer des informations d'identification temporaires et limitées. AWS

Pour plus d'informations, consultez Getting Started with User Pools dans le manuel Amazon Cognito Developer Guide.

Note

Pour les développeurs mobiles, Amazon Location fournit une authentification mobile SDKs pour iOS et Android. Consultez les GitHub référentiels suivants pour plus d'informations :

Créer un groupe d’identités Amazon Cognito

Vous pouvez créer des groupes d'identités Amazon Cognito pour autoriser un accès invité non authentifié à votre application via la console Amazon Cognito, le ou AWS CLI Amazon Cognito. APIs

Important

Le pool que vous créez doit se trouver dans Compte AWS la même AWS région que les ressources Amazon Location Service que vous utilisez.

Vous pouvez utiliser IAM les politiques associées aux rôles d'identité non authentifiés avec les actions suivantes :

  • 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'inclusion d'autres actions Amazon Location n'aura aucun effet et les identités non authentifiées ne pourront pas les appeler.

Pour créer un pool d'identités à l'aide de la console Amazon Cognito

  1. Accédez à la console Amazon Cognito.

  2. Choisissez Manage Identity groupes (Gérer les groupes d'identité).

  3. Choisissez Créer un nouveau groupe d'identités, puis entrez le nom de votre groupe d'identités.

  4. Dans la section pliable Identités non authentifiées, choisissez Activer l'accès aux identités non authentifiées.

  5. Sélectionnez Créer une réserve.

  6. Choisissez les IAM rôles que vous souhaitez utiliser avec votre pool d'identités.

  7. Agrandir Afficher les détails.

  8. Sous Identités non authentifiées, entrez un nom de rôle.

  9. Développez la section Afficher le document de politique, puis choisissez Modifier pour ajouter votre politique.

  10. Ajoutez votre politique pour autoriser l'accès à vos ressources.

    Vous trouverez ci-dessous des exemples de politiques pour les cartes, les lieux, les traceurs et les itinéraires. Pour utiliser les exemples pour votre propre politique, remplacez le region and accountID espaces réservés :

    Maps policy example

    La politique suivante accorde un accès en lecture seule à une ressource cartographique nommée 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'ajout d'une IAMcondition correspondante vous aws:referer permet de limiter l'accès du navigateur à vos ressources à une liste URLs ou à des URL préfixes. L'exemple suivant autorise l'accès à une ressource cartographique nommée uniquement RasterEsriImagery à partir du site Web example.com :

    Avertissement

    Bien qu'il aws:referer puisse limiter l'accès, il ne s'agit pas d'un mécanisme de sécurité. Il est dangereux d'inclure une valeur d'en-tête de référent connue publiquement. Les tiers non autorisés peuvent utiliser des navigateurs modifiés ou personnalisés pour fournir n'importe quelle valeur aws:referer de leur choix. Pour cette raison, il est recommandé de ne pas utiliser aws:referer pour empêcher les tiers non autorisés d'effectuer directement des demandes AWS . Cette clé est fournie uniquement pour permettre aux clients de protéger leur contenu numérique, stocké notamment dans Amazon S3, contre tout référencement sur des sites tiers non autorisés. Pour plus d'informations, voir: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/*" ] } } } ] }

    Si vous utilisez Tangram pour afficher une carte, celui-ci n'utilise pas les descripteurs de style, les glyphes ou les sprites renvoyés par les cartes. API Il est plutôt configuré en pointant vers un fichier .zip contenant les règles de style et les ressources nécessaires. La politique suivante accorde un accès en lecture seule à une ressource cartographique nommée ExampleMap pour l'GetMapTileopération.

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

    La politique suivante accorde un accès en lecture seule à une ressource d'index de lieux nommée ExamplePlaceIndex pour rechercher des lieux par texte ou par position.

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

    L'ajout d'une IAMcondition correspondante vous aws:referer permet de limiter l'accès du navigateur à vos ressources à une liste URLs ou à des URL préfixes. L'exemple suivant refuse l'accès à une ressource d'index de lieux nommée ExamplePlaceIndex de tous les sites Web de référence, saufexample.com.

    Avertissement

    Bien qu'il aws:referer puisse limiter l'accès, il ne s'agit pas d'un mécanisme de sécurité. Il est dangereux d'inclure une valeur d'en-tête de référent connue publiquement. Les tiers non autorisés peuvent utiliser des navigateurs modifiés ou personnalisés pour fournir n'importe quelle valeur aws:referer de leur choix. Pour cette raison, il est recommandé de ne pas utiliser aws:referer pour empêcher les tiers non autorisés d'effectuer directement des demandes AWS . Cette clé est fournie uniquement pour permettre aux clients de protéger leur contenu numérique, stocké notamment dans Amazon S3, contre tout référencement sur des sites tiers non autorisés. Pour plus d'informations, voir: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 politique suivante autorise l'accès à une ressource de suivi nommée ExampleTracker pour mettre à jour les positions des appareils.

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

    L'ajout d'une IAMcondition correspondante vous aws:referrer permet de limiter l'accès du navigateur à vos ressources à une liste URLs ou à des URL préfixes. L'exemple suivant refuse l'accès à une ressource de suivi nommée ExampleTracker de tous les sites Web de référence, saufexample.com.

    Avertissement

    Bien qu'il aws:referrer puisse limiter l'accès, il ne s'agit pas d'un mécanisme de sécurité. Il est dangereux d'inclure une valeur d'en-tête de référence connue du public. Les tiers non autorisés peuvent utiliser des navigateurs modifiés ou personnalisés pour fournir n'importe quelle valeur aws:referrer de leur choix. Pour cette raison, il est recommandé de ne pas utiliser aws:referrer pour empêcher les tiers non autorisés d'effectuer directement des demandes AWS . Cette clé est fournie uniquement pour permettre aux clients de protéger leur contenu numérique, stocké notamment dans Amazon S3, contre tout référencement sur des sites tiers non autorisés. Pour plus d'informations, voir: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 politique suivante autorise l'accès à une ressource de calcul d'itinéraire nommée ExampleCalculator pour calculer un itinéraire.

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

    L'ajout d'une IAMcondition correspondante vous aws:referrer permet de limiter l'accès du navigateur à vos ressources à une liste URLs ou à des URL préfixes. L'exemple suivant refuse l'accès à un calculateur d'itinéraire nommé ExampleCalculator de tous les sites Web de référence, saufexample.com.

    Avertissement

    Bien qu'il aws:referrer puisse limiter l'accès, il ne s'agit pas d'un mécanisme de sécurité. Il est dangereux d'inclure une valeur d'en-tête de référence connue du public. Les tiers non autorisés peuvent utiliser des navigateurs modifiés ou personnalisés pour fournir n'importe quelle valeur aws:referrer de leur choix. Pour cette raison, il est recommandé de ne pas utiliser aws:referrer pour empêcher les tiers non autorisés d'effectuer directement des demandes AWS . Cette clé est fournie uniquement pour permettre aux clients de protéger leur contenu numérique, stocké notamment dans Amazon S3, contre tout référencement sur des sites tiers non autorisés. Pour plus d'informations, voir: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/*" ] } } } ] }
    Note

    Bien que les pools d'identités non authentifiés soient destinés à être exposés sur des sites Internet non sécurisés, notez qu'ils seront échangés contre des informations d'identification standard limitées dans le temps. AWS

    Il est important de définir de manière appropriée les IAM rôles associés aux pools d'identités non authentifiés.

  11. Choisissez Autoriser pour créer vos groupes d'identités.

Le pool d'identités qui en résulte suit la syntaxe <region>:<GUID>.

Par exemple :

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

Pour plus d'exemples de politiques spécifiques à Amazon Location, consultezExemples de politiques basées sur l'identité pour Amazon Location Service.

Utilisez les groupes d'identités Amazon Cognito dans JavaScript

L'exemple suivant échange le pool d'identités non authentifié que vous avez créé contre des informations d'identification qui sont ensuite utilisées pour récupérer le descripteur de style de votre ressource cartographique. 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());
Note

Les informations d'identification récupérées à partir d'identités non authentifiées sont valides pendant une heure.

Voici un exemple de fonction qui renouvelle automatiquement les informations d'identification avant leur expiration.

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

Pour simplifier ce travail, vous pouvez utiliser l'Amazon LocationJavaScript Aide à l'authentification. Cela permet à la fois d'obtenir les informations d'identification et de les actualiser. Cet exemple utilise le 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));

Étapes suivantes

  • Pour modifier vos rôles, accédez à la IAMconsole.

  • Pour gérer vos groupes d'identités, accédez à la console Amazon Cognito.