Mengizinkan akses tamu yang tidak diautentikasi ke aplikasi Anda menggunakan Amazon Cognito - Amazon Location Service

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengizinkan akses tamu yang tidak diautentikasi ke aplikasi Anda menggunakan Amazon Cognito

Anda dapat menggunakan otentikasi Amazon Cognito sebagai alternatif untuk langsung menggunakan AWS Identity and Access Management (IAM) dengan SDK frontend dan permintaan HTTPS langsung.

Anda mungkin ingin menggunakan bentuk otentikasi ini karena alasan berikut:

  • Pengguna yang tidak diautentikasi — Jika Anda memiliki situs web dengan pengguna anonim, Anda dapat menggunakan kumpulan identitas Amazon Cognito. Untuk informasi lebih lanjut, lihat bagian diMengizinkan akses tamu yang tidak diautentikasi ke aplikasi Anda menggunakan Amazon Cognito.

  • Otentikasi Anda sendiri — Jika Anda ingin menggunakan proses otentikasi Anda sendiri, atau menggabungkan beberapa metode otentikasi, Anda dapat menggunakan Identitas Federasi Amazon Cognito. Untuk informasi selengkapnya, lihat Memulai Identitas Federasi di Panduan Pengembang Amazon Cognito.

Amazon Cognito menyediakan otentikasi, otorisasi, dan manajemen pengguna untuk aplikasi web dan seluler. Anda dapat menggunakan kumpulan identitas Amazon Cognito yang tidak diautentikasi dengan Lokasi Amazon sebagai cara bagi aplikasi untuk mengambil kredenal sementara yang tercakup ke bawah. AWS

Untuk informasi selengkapnya, lihat Memulai Kumpulan Pengguna di Panduan Pengembang Amazon Cognito.

catatan

Untuk pengembang seluler, Amazon Location menyediakan SDK otentikasi seluler untuk iOS dan Android, lihat repositori github berikut untuk informasi selengkapnya:

Buat kumpulan identitas Amazon Cognito

Anda dapat membuat kumpulan identitas Amazon Cognito untuk mengizinkan akses tamu yang tidak diautentikasi ke aplikasi Anda melalui konsol Amazon Cognito, API, atau AWS CLIAmazon Cognito.

penting

Kumpulan yang Anda buat harus sama Akun AWS dan AWS Wilayah sebagai sumber daya Amazon Location Service yang Anda gunakan.

Anda dapat menggunakan kebijakan IAM yang terkait dengan peran identitas yang tidak diautentikasi dengan tindakan berikut:

  • 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

Menyertakan tindakan Lokasi Amazon lainnya tidak akan berpengaruh, dan identitas yang tidak diautentikasi tidak akan dapat memanggilnya.

Untuk membuat kumpulan identitas menggunakan konsol Amazon Cognito

  1. Masuk ke Konsol Amazon Cognito.

  2. Pilih Kelola Kolam Identitas.

  3. Pilih Buat kumpulan identitas baru, lalu masukkan nama untuk kumpulan identitas Anda.

  4. Dari bagian Identitas tidak diautentikasi yang dapat dilipat, pilih Aktifkan akses ke identitas yang tidak diautentikasi.

  5. Pilih Buat kolam.

  6. Pilih peran IAM mana yang ingin Anda gunakan dengan kumpulan identitas Anda.

  7. Perluas Lihat Detail.

  8. Di bawah Identitas tidak diautentikasi, masukkan nama peran.

  9. Perluas bagian Lihat Dokumen Kebijakan, lalu pilih Edit untuk menambahkan kebijakan Anda.

  10. Tambahkan kebijakan Anda untuk memberikan akses ke sumber daya Anda.

    Berikut ini adalah contoh kebijakan untuk Peta, Tempat, Pelacak, dan Rute. Untuk menggunakan contoh kebijakan Anda sendiri, ganti placeholder region dan AccountID:

    Maps policy example

    Kebijakan berikut memberikan akses hanya-baca ke sumber daya peta bernama. 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" } ] }

    Menambahkan kondisi IAM yang cocok aws:referer memungkinkan Anda membatasi akses browser ke sumber daya Anda ke daftar URL atau awalan URL. Contoh berikut memungkinkan akses ke sumber daya peta yang diberi nama hanya RasterEsriImagery dari situs webexample.com:

    Awas

    Meskipun aws:referer dapat membatasi akses, itu bukan mekanisme keamanan. Menyertakan nilai header perujuk yang diketahui publik bukanlah sesuatu yang aman. Pihak yang tidak berwenang dapat menggunakan browser yang diubah atau disesuaikan untuk menyediakan nilai aws:referer yang mereka pilih. Akibatnya, tidak aws:referer boleh digunakan untuk mencegah pihak yang tidak berwenang membuat AWS permintaan langsung. Ini ditawarkan untuk memungkinkan pelanggan melindungi konten digital mereka, seperti konten yang disimpan di Amazon S3, agar tidak dirujuk pada pihak ketiga yang tidak berwenang. Untuk informasi lebih lanjut, lihat: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/*" ] } } } ] }

    Jika Anda menggunakan Tangram untuk menampilkan peta, peta tidak menggunakan deskriptor gaya, mesin terbang, atau sprite yang dikembalikan oleh Maps API. Sebaliknya, itu dikonfigurasi dengan menunjuk ke file.zip yang berisi aturan gaya dan aset yang diperlukan. Kebijakan berikut memberikan akses hanya-baca ke sumber daya peta yang diberi nama ExampleMapuntuk operasi. GetMapTile

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

    Kebijakan berikut memberikan akses hanya-baca ke sumber daya indeks tempat yang diberi nama ExamplePlaceIndexuntuk mencari tempat berdasarkan teks atau posisi.

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

    Menambahkan kondisi IAM yang cocok aws:referer memungkinkan Anda membatasi akses browser ke sumber daya Anda ke daftar URL atau awalan URL. Contoh berikut menolak akses ke sumber daya indeks tempat yang dinamai ExamplePlaceIndexdari semua situs web yang merujuk, kecualiexample.com.

    Awas

    Meskipun aws:referer dapat membatasi akses, itu bukan mekanisme keamanan. Menyertakan nilai header perujuk yang diketahui publik bukanlah sesuatu yang aman. Pihak yang tidak berwenang dapat menggunakan browser yang diubah atau disesuaikan untuk menyediakan nilai aws:referer yang mereka pilih. Akibatnya, tidak aws:referer boleh digunakan untuk mencegah pihak yang tidak berwenang membuat AWS permintaan langsung. Ini ditawarkan untuk memungkinkan pelanggan melindungi konten digital mereka, seperti konten yang disimpan di Amazon S3, agar tidak dirujuk pada pihak ketiga yang tidak berwenang. Untuk informasi lebih lanjut, lihat: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

    Kebijakan berikut memberikan akses ke sumber daya pelacak yang diberi nama ExampleTrackeruntuk memperbarui posisi perangkat.

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

    Menambahkan kondisi IAM yang cocok aws:referer memungkinkan Anda membatasi akses browser ke sumber daya Anda ke daftar URL atau awalan URL. Contoh berikut menolak akses ke sumber daya pelacak yang dinamai ExampleTrackerdari semua situs web yang merujuk, kecuali. example.com

    Awas

    Meskipun aws:referer dapat membatasi akses, itu bukan mekanisme keamanan. Menyertakan nilai header perujuk yang diketahui publik bukanlah sesuatu yang aman. Pihak yang tidak berwenang dapat menggunakan browser yang diubah atau disesuaikan untuk menyediakan nilai aws:referer yang mereka pilih. Akibatnya, tidak aws:referer boleh digunakan untuk mencegah pihak yang tidak berwenang membuat AWS permintaan langsung. Ini ditawarkan untuk memungkinkan pelanggan melindungi konten digital mereka, seperti konten yang disimpan di Amazon S3, agar tidak dirujuk pada pihak ketiga yang tidak berwenang. Untuk informasi lebih lanjut, lihat: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

    Kebijakan berikut memberikan akses ke sumber kalkulator rute yang diberi nama ExampleCalculatoruntuk menghitung rute.

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

    Menambahkan kondisi IAM yang cocok aws:referer memungkinkan Anda membatasi akses browser ke sumber daya Anda ke daftar URL atau awalan URL. Contoh berikut menolak akses ke kalkulator rute yang dinamai ExampleCalculatordari semua situs web yang merujuk, kecualiexample.com.

    Awas

    Meskipun aws:referer dapat membatasi akses, itu bukan mekanisme keamanan. Menyertakan nilai header perujuk yang diketahui publik bukanlah sesuatu yang aman. Pihak yang tidak berwenang dapat menggunakan browser yang diubah atau disesuaikan untuk menyediakan nilai aws:referer yang mereka pilih. Akibatnya, tidak aws:referer boleh digunakan untuk mencegah pihak yang tidak berwenang membuat AWS permintaan langsung. Ini ditawarkan untuk memungkinkan pelanggan melindungi konten digital mereka, seperti konten yang disimpan di Amazon S3, agar tidak dirujuk pada pihak ketiga yang tidak berwenang. Untuk informasi lebih lanjut, lihat: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/*" ] } } } ] }
    catatan

    Meskipun kumpulan identitas yang tidak diautentikasi dimaksudkan untuk eksposur di situs internet yang tidak aman, perhatikan bahwa mereka akan ditukar dengan kredensi standar dan terbatas waktu. AWS

    Penting untuk mencakup peran IAM yang terkait dengan kumpulan identitas yang tidak diautentikasi dengan tepat.

  11. Pilih Izinkan untuk membuat kumpulan identitas Anda.

Kumpulan identitas yang dihasilkan mengikuti sintaks <region>:<GUID>.

Sebagai contoh:

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

Untuk contoh kebijakan lainnya khusus untuk Lokasi Amazon, lihatContoh kebijakan berbasis identitas untuk Amazon Location Service.

Menggunakan kumpulan identitas Amazon Cognito di JavaScript

Contoh berikut menukar kumpulan identitas tidak diautentikasi yang telah Anda buat untuk kredensi yang kemudian digunakan untuk mengambil deskriptor gaya untuk sumber daya peta Anda. 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());
catatan

Kredensyal yang diambil dari identitas yang tidak diautentikasi berlaku selama satu jam.

Berikut ini adalah contoh fungsi yang secara otomatis memperbarui kredensyal sebelum kedaluwarsa.

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

Untuk menyederhanakan pekerjaan ini, Anda dapat menggunakan Lokasi JavaScript Pembantu otentikasi Amazon. Ini menggantikan keduanya mendapatkan kredensyal, dan menyegarkannya. Contoh ini menggunakan AWS SDK untuk 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));

Langkah selanjutnya