Uso de Amazon Cognito para la autenticación - Amazon Location Service

Uso de Amazon Cognito para la autenticación

Puede utilizar la autenticación de Amazon Cognito como alternativa para directamente usar usuarios de AWS Identity and Access Management (IAM) con las solicitudes de SDK de frontend.

Amazon Cognito ofrece autenticación, autorización y administración de usuarios para aplicaciones móviles y web. Puede utilizar los grupos de identidades no autenticadas de Amazon Cognito con Amazon Location para que las aplicaciones recuperen credenciales de AWS temporales y restringidas.

Para obtener más información, consulte Introducción a los grupos de usuarios en la Guía para desarrolladores de Amazon Cognito.

Es posible que desee utilizar esta forma de autenticación por los siguientes motivos:

  • Usuarios no autenticados: si tiene un sitio web con usuarios anónimos, puede utilizar los grupos de identidades de Amazon Cognito.

    Para obtener más información, consulte la sección en Uso de Amazon Cognito para la autenticación.

  • Su propia autenticación: si desea utilizar su propio proceso de autenticación o combinar varios métodos de autenticación, puede utilizar Amazon Cognito Federated Identities.

    Para obtener más información, consulte Introducción a las identidades federadas en la Guía para desarrolladores de Amazon Cognito.

Uso de Amazon Cognito y Amazon Location Service

Puede utilizar las políticas de AWS Identity and Access Management (IAM) asociadas a los roles de identidad no autenticados con las siguientes acciones:

Maps

Lista de acciones de mapas

  • geo-maps:GetStaticMap

  • geo-maps:GetTile

nota

Los nombres de los recursos para las acciones anteriores son:

arn:aws:geo-maps:region::provider/default
Places

Lista de acciones de ubicación:

  • geo-places:Geocode

  • geo-places:ReverseGeocode

  • geo-places:SearchNearby

  • geo-places:SearchText

  • geo-places:Autocomplete

  • geo-places:Suggest

  • geo-places:GetPlace

nota

Los nombres de los recursos para las acciones anteriores son:

arn:aws:geo-places:region::provider/default
Routes

Lista de acciones de rutas:

  • geo-routes:CalculateRoutes

  • geo-routes:CalculateRouteMatrix

  • geo-routes:CalculateIsolines

  • geo-routes:OptimizeWaypoints

  • geo-routes:SnapToRoads

nota

Los nombres de los recursos para las acciones anteriores son:

arn:aws:geo-routes:region::provider/default
Geofences and Trackers

Lista de acciones de geocercas y rastreadores

  • geo:GetGeofence

  • geo:ListGeofences

  • geo:PutGeofence

  • geo:BatchDeleteGeofence

  • geo:BatchPutGeofence

  • geo:BatchEvaluateGeofences

  • geo:GetDevicePosition*

  • geo:ListDevicePositions

  • geo:BatchDeleteDevicePositionHistory

  • geo:BatchGetDevicePosition

  • geo:BatchUpdateDevicePosition

nota

Los nombres de los recursos para las acciones anteriores son:

arn:aws:geo:region:accountID:tracker/ExampleTracker
Previous version

Lista de acciones de versiones anteriores:

  • geo:GetMap*

  • geo:SearchPlaceIndexForText

  • geo:SearchPlaceIndexForPosition

  • geo:GetPlace

  • geo:CalculateRoute

  • geo:CalculateRouteMatrix

nota

Los nombres de los recursos para las acciones anteriores son:

Mapas

arn:aws:geo:region:accountID:map/ExampleMap

Lugares

arn:aws:geo:region:accountID:place-index/ExamplePlaceIndex

Rutas

arn:aws:geo:region:accountID:route-calculator/ExampleCalculator

Creación de un grupo de identidades en Amazon Cognito

Puede crear grupos de identidades de Amazon Cognito para dar acceso de invitados no autenticados a la aplicación mediante la consola de Amazon Cognito, la AWS CLI o las API de Amazon Cognito.

importante

El grupo que cree debe estar en la misma Cuenta de AWS de la región de AWS y en la misma región que los recursos de Amazon Location Service que esté utilizando.

Console

Para crear un grupo de identidades con la consola de Amazon Cognito

  1. Vaya a la consola de Amazon Cognito.

  2. Seleccione Administrar grupos de identidades.

  3. Seleccione Crear un nuevo grupo de identidades y, a continuación, introduzca un nombre para su grupo de identidades.

  4. En Identidades sin autenticar, elija Habilitar el acceso a identidades sin autenticar.

  5. Elija Crear grupo.

  6. Elija los roles de IAM que quiera usar con su grupo de identidades.

  7. Amplíe Ver detalles.

  8. En Identidades no autenticadas, introduzca un nombre de rol.

  9. Amplíe la sección Ver documento de política y, a continuación, seleccione Editar para agregar la política.

  10. Agregue su política para dar acceso a sus recursos.

    nota

    Consulte la sección Uso de Amazon Cognito y Amazon Location Service anterior para ver una lista de acciones.

    { "Version": "2012-10-17", "Statement": [ { Sid": "RoutesReadOnly", Effect": "Allow", Action": [ // add comma separated value from the previous section ], Resource": "value from previous section" } ] }
  11. Elija Permitir para crear sus grupos de identidades.

Uso del grupo de identidades de Amazon Cognito en la web

En el siguiente ejemplo, se intercambia el grupo de identidades no autenticadas que ha creado por credenciales que, a continuación, se utilizan para llamar a CalculateIsolines. Para simplificar este trabajo, el ejemplo usa los procedimientos Cómo utilizar los ayudantes de autenticación de Amazon Location. Esto sustituye a la obtención de las credenciales y a la actualización de las mismas.

En este ejemplo, se utiliza el SDK de AWS para JavaScript v3.

import { GeoRoutesClient, CalculateIsolinesCommand , } from "@aws-sdk/client-geo-routes"; // ES Modules import import { withIdentityPoolId } from "@aws/amazon-location-utilities-auth-helper"; const identityPoolId = "<identity pool ID>"; // for example, us-east-1:1sample4-5678-90ef-aaaa-1234abcd56ef const authHelper = await withIdentityPoolId(identityPoolId); const client = new GeoRoutesClient({ ...authHelper.getClientConfig(), region: "<region>", // The region containing the identity pool }); const input = { DepartNow: true, TravelMode: "Car", Origin: [-123.12327, 49.27531], Thresholds: { Time: [5, 10, 30], }, }; const command = new CalculateIsolinesCommand(input); const response = await client.send(command); console.log(JSON.stringify(response, null, 2))