Izinkan 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.

Izinkan 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 permintaan front end SDKs dan langsung. HTTPS

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 diIzinkan 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 otentikasi seluler SDKs untuk iOS dan Android, lihat GitHub repositori 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, the, atau AWS CLI Amazon Cognito. APIs

penting

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

Anda dapat menggunakan IAM kebijakan 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 IAM peran 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 untuk kebijakan Anda sendiri, ganti region and accountID placeholder:

    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 IAMkondisi yang cocok aws:referer memungkinkan Anda membatasi akses browser ke sumber daya Anda ke daftar URLs atau URL awalan. 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. Sebagai hasilnya, aws:referer tidak boleh digunakan untuk mencegah pihak yang tidak berwenang melakukan permintaan AWS 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, itu tidak menggunakan deskriptor gaya, glyph, 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 bernama ExampleMap untuk GetMapTile operasi.

    { "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 bernama ExamplePlaceIndex untuk 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 IAMkondisi yang cocok aws:referer memungkinkan Anda membatasi akses browser ke sumber daya Anda ke daftar URLs atau URL awalan. Contoh berikut menolak akses ke sumber daya indeks tempat bernama ExamplePlaceIndex dari 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. Sebagai hasilnya, aws:referer tidak boleh digunakan untuk mencegah pihak yang tidak berwenang melakukan permintaan AWS 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:referrer 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 bernama ExampleTracker untuk memperbarui posisi perangkat.

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

    Menambahkan IAMkondisi yang cocok aws:referrer memungkinkan Anda membatasi akses browser ke sumber daya Anda ke daftar URLs atau URL awalan. Contoh berikut menolak akses ke sumber daya pelacak bernama ExampleTracker dari semua situs web yang merujuk, kecualiexample.com.

    Awas

    Meskipun aws:referrer dapat membatasi akses, itu bukan mekanisme keamanan. Berbahaya untuk memasukkan nilai header perujuk yang diketahui publik. Pihak yang tidak berwenang dapat menggunakan browser yang diubah atau disesuaikan untuk menyediakan nilai aws:referrer yang mereka pilih. Sebagai hasilnya, aws:referrer tidak boleh digunakan untuk mencegah pihak yang tidak berwenang melakukan permintaan AWS 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:referrer 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 bernama ExampleCalculator untuk menghitung rute.

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

    Menambahkan IAMkondisi yang cocok aws:referrer memungkinkan Anda membatasi akses browser ke sumber daya Anda ke daftar URLs atau URL awalan. Contoh berikut menolak akses ke kalkulator rute bernama ExampleCalculator dari semua situs web yang merujuk, kecualiexample.com.

    Awas

    Meskipun aws:referrer dapat membatasi akses, itu bukan mekanisme keamanan. Berbahaya untuk memasukkan nilai header perujuk yang diketahui publik. Pihak yang tidak berwenang dapat menggunakan browser yang diubah atau disesuaikan untuk menyediakan nilai aws:referrer yang mereka pilih. Sebagai hasilnya, aws:referrer tidak boleh digunakan untuk mencegah pihak yang tidak berwenang melakukan permintaan AWS 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:referrer 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 IAM peran 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.

Gunakan 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

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

Berikut ini adalah contoh fungsi yang secara otomatis memperbarui kredensi 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 kredensi, dan menyegarkannya. Contoh ini menggunakan AWS SDK for 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

  • Untuk memodifikasi peran Anda, buka IAMkonsol.

  • Untuk mengelola kumpulan identitas Anda, buka konsol Amazon Cognito.