Permitindo acesso de convidado não autenticado às aplicações usando o Amazon Cognito. - Amazon Location Service

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Permitindo acesso de convidado não autenticado às aplicações usando o Amazon Cognito.

Você pode usar a autenticação do Amazon Cognito como alternativa ao uso direto AWS Identity and Access Management (IAM) com SDKs de front-end e solicitações diretas de HTTPS.

Talvez você queira usar essa forma de autenticação pelos seguintes motivos:

  • Usuários não autenticados — Se você tiver um site com usuários anônimos, poderá usar os bancos de identidades do Amazon Cognito. Para obter mais informações, consulte a seção em Permitindo acesso de convidado não autenticado às aplicações usando o Amazon Cognito..

  • Sua própria autenticação — Se você quiser usar seu próprio processo de autenticação ou combinar vários métodos de autenticação, você pode usar as Identidades Federadas do Amazon Cognito. Para obter mais informações, consulte Conceitos básicos das identidades federadas no Guia do desenvolvedor do Amazon Cognito.

O Amazon Cognito fornece autenticação, autorização e gerenciamento de usuários para suas aplicações Web e móveis. Você pode usar grupos de identidade não autenticados do Amazon Cognito com o Amazon Location como uma forma de os aplicativos recuperarem credenciais temporárias com escopo reduzido. AWS

Para obter mais informações, consulte Introdução aos Grupos de Usuários no Guia do Desenvolvedor do Amazon Cognito.

nota

Para desenvolvedores móveis, o Amazon Location fornece SDKs de autenticação móvel para iOS e Android. Consulte os seguintes repositórios do github para obter mais informações:

Como criar um grupo de identidades do Amazon Cognito

Você pode criar grupos de identidade do Amazon Cognito para permitir o acesso de convidados não autenticados ao seu aplicativo por meio do console do Amazon Cognito, do ou das APIs AWS CLIdo Amazon Cognito.

Importante

O pool que você cria deve estar na mesma Conta da AWS AWS região dos recursos do Amazon Location Service que você está usando.

Você pode usar políticas do IAM associadas a funções de identidade não autenticadas com as seguintes ações:

  • 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

A inclusão de outras ações do Amazon Location não terá efeito, e identidades não autenticadas não poderão chamá-las.

Para criar um banco de identidades usando o console do Amazon Cognito

  1. Acesse o console do Amazon Cognito.

  2. Selecione Gerenciar grupos de identidades.

  3. Selecione Criar novo banco de identidades e, em seguida, insira um nome para seu banco de identidades.

  4. Na seção expansível Identidades não autenticadas, selecione Habilitar acesso a identidades não autenticadas.

  5. Selecione Criar grupo.

  6. Escolha quais perfis do IAM você deseja utilizar com seu banco de identidades.

  7. Expanda Exibir detalhes.

  8. Em Identidades não autenticadas, insira um nome de perfil.

  9. Expanda a seção Exibir documento da política e selecione Editar para adicionar sua política.

  10. Adicione sua política para conceder acesso aos seus recursos.

    Veja a seguir exemplos de políticas para mapas, lugares, rastreadores e rotas. Para utilizar os exemplos na sua própria política, substitua os marcadores de posição Região e ID da conta:

    Maps policy example

    A política a seguir concede acesso somente para leitura a um recurso de mapa chamado. 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" } ] }

    Adicionar uma condição do IAM que corresponda a aws:referer permite limitar o acesso do navegador aos seus recursos a uma lista de URLs ou prefixos de URL. O exemplo a seguir permite o acesso a um recurso de mapa chamado RasterEsriImagery somente do site example.com:

    Atenção

    Embora aws:referer possa limitar o acesso, não é um mecanismo de segurança. É perigoso incluir um valor de cabeçalho do indicador conhecido publicamente. Partes não autorizadas podem usar navegadores personalizados ou modificados para fornecer qualquer valor de aws:referer que escolherem. Como resultado, não aws:referer deve ser usado para impedir que partes não autorizadas façam AWS solicitações diretas. Ele é oferecido apenas para permitir que os clientes impeçam que seu conteúdo digital, como o conteúdo armazenado no Amazon S3, seja indicado em sites de terceiros não autorizados. Para obter mais informações, consulte AWS:referer..

    { "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/*" ] } } } ] }

    Se você estiver usando o Tangram para exibir um mapa, ele não usa os descritores de estilo, glifos ou sprites retornados pela API do Maps. Em vez disso, ele é configurado apontando para um arquivo .zip que contém regras de estilo e ativos necessários. A política a seguir concede acesso somente para leitura a um recurso de mapa nomeado ExampleMappara a GetMapTile operação.

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

    A política a seguir concede acesso somente para leitura a um recurso de índice de lugares chamado ExamplePlaceIndexpara pesquisar lugares por texto ou posições.

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

    Adicionar uma condição do IAM que corresponda a aws:referer permite limitar o acesso do navegador aos seus recursos a uma lista de URLs ou prefixos de URL. O exemplo a seguir nega o acesso a um recurso de índice de local chamado ExamplePlaceIndexde todos os sites de referência, excetoexample.com.

    Atenção

    Embora aws:referer possa limitar o acesso, não é um mecanismo de segurança. É perigoso incluir um valor de cabeçalho do indicador conhecido publicamente. Partes não autorizadas podem usar navegadores personalizados ou modificados para fornecer qualquer valor de aws:referer que escolherem. Como resultado, não aws:referer deve ser usado para impedir que partes não autorizadas façam AWS solicitações diretas. Ele é oferecido apenas para permitir que os clientes impeçam que seu conteúdo digital, como o conteúdo armazenado no Amazon S3, seja indicado em sites de terceiros não autorizados. Para obter mais informações, consulte AWS:referer..

    { "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

    A política a seguir concede acesso a um recurso rastreador chamado ExampleTrackerpara atualizar as posições do dispositivo.

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

    Adicionar uma condição do IAM que corresponda a aws:referer permite limitar o acesso do navegador aos seus recursos a uma lista de URLs ou prefixos de URL. O exemplo a seguir nega o acesso a um recurso rastreador chamado ExampleTrackerde todos os sites de referência, exceto. example.com

    Atenção

    Embora aws:referer possa limitar o acesso, não é um mecanismo de segurança. É perigoso incluir um valor de cabeçalho do indicador conhecido publicamente. Partes não autorizadas podem usar navegadores personalizados ou modificados para fornecer qualquer valor de aws:referer que escolherem. Como resultado, não aws:referer deve ser usado para impedir que partes não autorizadas façam AWS solicitações diretas. Ele é oferecido apenas para permitir que os clientes impeçam que seu conteúdo digital, como o conteúdo armazenado no Amazon S3, seja indicado em sites de terceiros não autorizados. Para obter mais informações, consulte AWS:referer..

    { "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

    A política a seguir concede acesso a um recurso de calculadora de rotas chamado ExampleCalculatorpara calcular uma rota.

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

    Adicionar uma condição do IAM que corresponda a aws:referer permite limitar o acesso do navegador aos seus recursos a uma lista de URLs ou prefixos de URL. O exemplo a seguir nega o acesso a uma calculadora de rotas chamada ExampleCalculatorde todos os sites de referência, excetoexample.com.

    Atenção

    Embora aws:referer possa limitar o acesso, não é um mecanismo de segurança. É perigoso incluir um valor de cabeçalho do indicador conhecido publicamente. Partes não autorizadas podem usar navegadores personalizados ou modificados para fornecer qualquer valor de aws:referer que escolherem. Como resultado, não aws:referer deve ser usado para impedir que partes não autorizadas façam AWS solicitações diretas. Ele é oferecido apenas para permitir que os clientes impeçam que seu conteúdo digital, como o conteúdo armazenado no Amazon S3, seja indicado em sites de terceiros não autorizados. Para obter mais informações, consulte AWS:referer..

    { "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/*" ] } } } ] }
    nota

    Embora os grupos de identidade não autenticados sejam destinados à exposição em sites da Internet não seguros, observe que eles serão trocados por credenciais padrão com limite de tempo. AWS

    É importante definir corretamente o escopo dos perfis do IAM associados aos bancos de identidades não autenticados.

  11. Selecione Permitir para criar seus bancos de identidades.

O banco de identidades resultante segue a sintaxe <region>:<GUID>.

Por exemplo: .

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

Para obter mais exemplos de políticas específicas para Amazon Location, consulte Exemplos de políticas baseadas em identidade do Amazon Location Service.

Usando os grupos de identidade do Amazon Cognito em JavaScript

O exemplo a seguir troca o pool de identidade não autenticado que você criou por credenciais que são usadas para buscar o descritor de estilo para seu recurso de mapa. 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());
nota

As credenciais recuperadas de identidades não autenticadas são válidas por uma hora.

Veja a seguir um exemplo de uma função que renova automaticamente as credenciais antes que elas expirem.

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

Para simplificar esse trabalho, você pode usar o Amazon Location JavaScript Auxiliar de autenticação. Isso serve tanto para obter as credenciais quanto para atualizá-las. Este exemplo usa o AWS SDK para 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));

Próximas etapas