使用 Amazon Cognito 进行身份验证 - Amazon Location Service

使用 Amazon Cognito 进行身份验证

Amazon Cognito 身份验证可作为直接使用 AWS Identity and Access Management(IAM)对发出前端 SDK 请求的用户进行身份验证的替代方案。

Amazon Cognito 为 Web 和移动应用程序提供身份验证、授权和用户管理。您可以使用带有 Amazon Location 的 Amazon Cognito 未经身份验证的身份池作为应用程序检索临时、限定范围的 AWS 凭证的一种方式。

想要了解更多信息,请参阅 Amazon Cognito 开发人员指南中的用户池入门

出于以下原因,您可能需要使用这种形式的身份验证:

  • 未经身份验证的用户 – 如果您的网站包含匿名用户,则可以使用 Amazon Cognito 身份池。

    想要了解更多信息,请在 使用 Amazon Cognito 进行身份验证 上参阅本部分。

  • 您自己的身份验证 – 如果您想使用自己的身份验证流程或组合使用多种身份验证方法,则可以使用 Amazon Cognito 联合身份。

    有关更多信息,请参阅《Amazon Cognito 开发人员指南》中的开始使用联合身份

使用 Amazon Cognito 和 Amazon Location Service

您可以将与未经身份验证的身份角色关联的 AWS Identity and Access Management(IAM)策略用于以下操作:

Maps

地图操作列表

  • geo-maps:GetStaticMap

  • geo-maps:GetTile

注意

上述操作的资源名称为:

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

地点操作列表:

  • geo-places:Geocode

  • geo-places:ReverseGeocode

  • geo-places:SearchNearby

  • geo-places:SearchText

  • geo-places:Autocomplete

  • geo-places:Suggest

  • geo-places:GetPlace

注意

上述操作的资源名称为:

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

路线操作列表:

  • geo-routes:CalculateRoutes

  • geo-routes:CalculateRouteMatrix

  • geo-routes:CalculateIsolines

  • geo-routes:OptimizeWaypoints

  • geo-routes:SnapToRoads

注意

上述操作的资源名称为:

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

地理围栏和跟踪器操作列表

  • geo:GetGeofence

  • geo:ListGeofences

  • geo:PutGeofence

  • geo:BatchDeleteGeofence

  • geo:BatchPutGeofence

  • geo:BatchEvaluateGeofences

  • geo:GetDevicePosition*

  • geo:ListDevicePositions

  • geo:BatchDeleteDevicePositionHistory

  • geo:BatchGetDevicePosition

  • geo:BatchUpdateDevicePosition

注意

上述操作的资源名称为:

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

先前版本操作列表:

  • geo:GetMap*

  • geo:SearchPlaceIndexForText

  • geo:SearchPlaceIndexForPosition

  • geo:GetPlace

  • geo:CalculateRoute

  • geo:CalculateRouteMatrix

注意

上述操作的资源名称为:

映射

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

位数

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

Routes

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

创建一个 Amazon Cognito 身份池

您可以创建 Amazon Cognito 身份池,允许未经身份验证的访客通过 Amazon Cognito 控制台、或 Amazon Cognito AWS CLI API 访问您的应用程序。

重要

您创建的身份池必须与您正在使用的 Amazon Location Service 资源位于同一 AWS 账户 和 AWS 区域。

Console

使用 Amazon Cognito 控制台创建身份池

  1. 转到 Amazon Cognito 控制台

  2. 选择 Manage Identity Pools(管理身份池)。

  3. 选择创建新身份池,然后输入身份池的名称。

  4. 未经验证的身份可折叠部分中,选择启用未经验证的身份的访问权限

  5. 选择创建池

  6. 选择您希望用于身份池的 IAM 角色。

  7. 展开查看详情

  8. 未经身份验证的身份下,输入角色名称。

  9. 展开查看策略文档部分,然后选择编辑以添加您的策略。

  10. 添加您的策略来授予对您的资源的访问权限。

    注意

    请参阅上面的 使用 Amazon Cognito 和 Amazon Location Service部分了解操作列表。

    { "Version": "2012-10-17", "Statement": [ { Sid": "RoutesReadOnly", Effect": "Allow", Action": [ // add comma separated value from the previous section ], Resource": "value from previous section" } ] }
  11. 选择允许以创建您的身份池。

在 Web 中使用 Amazon Cognito 身份池

以下示例将您创建的未经身份验证的身份池交换为凭证,然后使用这些凭证调用 CalculateIsolines。为了简化这项工作,该示例使用 Amazon Location 如何使用身份验证帮助程序 步骤。这可以代替获取凭证和刷新凭证。

此示例使用 AWS SDK for 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))