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) à la fois avec les SDK frontaux et les requêtes HTTPS directes.

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

  • Utilisateurs non authentifiés : si vous avez un site Web avec 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 des kits SDK d'authentification mobile pour iOS et Android. Consultez les référentiels github 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 par le biais de la console Amazon Cognito, des API Amazon Cognito ou AWS CLIdes API Amazon Cognito.

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 les politiques IAM associées à des 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 rôles IAM 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 les espaces réservés à la région et à l'AccountID :

    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 condition IAM correspondante vous aws:referer permet de limiter l'accès du navigateur à vos ressources à une liste d'URL ou de préfixes d'URL. 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. Par conséquent, aws:referer il ne doit pas être utilisé pour empêcher des parties non autorisées de faire des AWS demandes directes. 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 l'API Maps. 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 d'après ExampleMapl'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 ExamplePlaceIndexpour 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 condition IAM correspondante vous aws:referer permet de limiter l'accès du navigateur à vos ressources à une liste d'URL ou de préfixes d'URL. L'exemple suivant refuse l'accès à une ressource d'index de lieux nommée à ExamplePlaceIndexpartir de tous les sites Web de référence, à l'exception deexample.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. Par conséquent, aws:referer il ne doit pas être utilisé pour empêcher des parties non autorisées de faire des AWS demandes directes. 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:*", "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 ExampleTrackerpour 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 condition IAM correspondante vous aws:referer permet de limiter l'accès du navigateur à vos ressources à une liste d'URL ou de préfixes d'URL. L'exemple suivant refuse l'accès à une ressource de suivi nommée ExampleTrackerdepuis tous les sites Web de référence, à l'exception deexample.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. Par conséquent, aws:referer il ne doit pas être utilisé pour empêcher des parties non autorisées de faire des AWS demandes directes. 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: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 ExampleCalculatorpour 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 condition IAM correspondante vous aws:referer permet de limiter l'accès du navigateur à vos ressources à une liste d'URL ou de préfixes d'URL. L'exemple suivant refuse l'accès à un calculateur d'itinéraire nommé ExampleCalculatordepuis tous les sites Web de référence, à l'exception deexample.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. Par conséquent, aws:referer il ne doit pas être utilisé pour empêcher des parties non autorisées de faire des AWS demandes directes. 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:*", "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 rôles IAM 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.

Utilisation des 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 pour la JavaScript version 3.

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 console IAM.

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