使用 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)策略用于以下操作:
创建一个 Amazon Cognito 身份池
您可以创建 Amazon Cognito 身份池,允许未经身份验证的访客通过 Amazon Cognito 控制台、或 Amazon Cognito AWS CLI API 访问您的应用程序。
重要
您创建的身份池必须与您正在使用的 Amazon Location Service 资源位于同一 AWS 账户 和 AWS 区域。
在 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))