View a markdown version of this page

Otorisasi dengan identitas Amazon Cognito - AWS IoT Core

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

Otorisasi dengan identitas Amazon Cognito

Ada dua jenis identitas Amazon Cognito: tidak diautentikasi dan diautentikasi. Jika aplikasi Anda mendukung identitas Amazon Cognito yang tidak diautentikasi, tidak ada otentikasi yang dilakukan, sehingga Anda tidak tahu siapa penggunanya.

Identitas Tidak Diautentikasi: Untuk identitas Amazon Cognito yang tidak diautentikasi, Anda memberikan izin dengan melampirkan peran IAM ke kumpulan identitas yang tidak diautentikasi. Kami menyarankan Anda hanya memberikan akses ke sumber daya yang Anda inginkan tersedia untuk pengguna yang tidak dikenal.

penting

Untuk pengguna Amazon Cognito yang tidak diautentikasi yang terhubung AWS IoT Core, kami sarankan Anda memberikan akses ke sumber daya yang sangat terbatas dalam kebijakan IAM.

Identitas Terautentikasi: Untuk identitas Amazon Cognito yang diautentikasi, Anda perlu menentukan izin di dua tempat:

  • Melampirkan kebijakan IAM ke kumpulan Identitas Amazon Cognito yang diautentikasi dan

  • Lampirkan AWS IoT Core kebijakan ke Amazon Cognito Identity (pengguna terautentikasi).

Contoh kebijakan untuk pengguna Amazon Cognito yang tidak diautentikasi dan terautentikasi yang terhubung ke AWS IoT Core

Contoh berikut menunjukkan izin dalam kebijakan IAM dan kebijakan IoT dari identitas Amazon Cognito. Pengguna yang diautentikasi ingin mempublikasikan ke topik khusus perangkat (misalny device/DEVICE_ID a/status).

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/Client_ID" ] }, { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/device/Device_ID/status" ] } ] }

Contoh berikut menunjukkan izin dalam kebijakan IAM dari peran Amazon Cognito yang tidak diautentikasi. Pengguna yang tidak diautentikasi ingin mempublikasikan ke topik khusus non-perangkat yang tidak memerlukan otentikasi.

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/*" ] }, { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/non_device_specific_topic" ] } ] }

GitHub contoh

Contoh aplikasi web berikut GitHub menunjukkan cara memasukkan lampiran kebijakan ke pengguna yang diautentikasi ke dalam proses pendaftaran dan otentikasi pengguna.

Amplify adalah seperangkat alat dan layanan yang membantu Anda membangun aplikasi web dan seluler yang terintegrasi dengan AWS layanan. Untuk informasi selengkapnya tentang Amplify, lihat Dokumentasi Ker angka Amplify,.

Kedua contoh melakukan langkah-langkah berikut.

  1. Saat pengguna mendaftar untuk akun, aplikasi akan membuat kumpulan dan identitas pengguna Amazon Cognito.

  2. Ketika pengguna mengotentikasi, aplikasi membuat dan melampirkan kebijakan ke identitas. Ini memberi pengguna izin mempublikasikan dan berlangganan.

  3. Pengguna dapat menggunakan aplikasi untuk mempublikasikan dan berlangganan topik MQTT.

Contoh pertama menggunakan operasi AttachPolicy API langsung di dalam operasi otentikasi. Contoh berikut menunjukkan bagaimana menerapkan panggilan API ini di dalam aplikasi web React yang menggunakan Amplify dan. AWS IoT Device SDK for JavaScript

function attachPolicy(id, policyName) { var Iot = new AWS.Iot({region: AWSConfiguration.region, apiVersion: AWSConfiguration.apiVersion, endpoint: AWSConfiguration.endpoint}); var params = {policyName: policyName, target: id}; console.log("Attach IoT Policy: " + policyName + " with cognito identity id: " + id); Iot.attachPolicy(params, function(err, data) { if (err) { if (err.code !== 'ResourceAlreadyExistsException') { console.log(err); } } else { console.log("Successfully attached policy with the identity", data); } }); }

Kode ini muncul di AuthDisplay.js file.

Contoh kedua mengimplementasikan operasi AttachPolicy API dalam fungsi Lambda. Contoh berikut menunjukkan bagaimana Lambda menggunakan panggilan API ini.

iot.attachPolicy(params, function(err, data) { if (err) { if (err.code !== 'ResourceAlreadyExistsException') { console.log(err); res.json({error: err, url: req.url, body: req.body}); } } else { console.log(data); res.json({success: 'Create and attach policy call succeed!', url: req.url, body: req.body}); } });

Kode ini muncul di dalam iot.GetPolicy fungsi di file app.js.

catatan

Saat Anda memanggil fungsi dengan AWS kredenSIAL yang Anda peroleh melalui kumpulan Identitas Amazon Cognito, objek konteks dalam fungsi Lambda berisi nilai untuk. context.cognito_identity_id Untuk informasi selengkapnya, lihat hal berikut.