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 autentikasi yang dilakukan, sehingga Anda tidak tahu siapa pengguna tersebut.

Identitas Tidak Diautentikasi: Untuk identitas Amazon Cognito yang tidak diautentikasi, Anda memberikan izin dengan melampirkan peran ke kumpulan identitas yang tidak IAM 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 menyarankan Anda memberikan akses ke sumber daya yang sangat terbatas dalam IAM kebijakan.

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

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

  • Lampirkan AWS IoT Core kebijakan untuk Identitas Amazon Cognito (pengguna yang diautentikasi).

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

Contoh berikut menunjukkan izin dalam IAM kebijakan dan kebijakan IoT dari identitas Amazon Cognito. Pengguna yang diautentikasi ingin mempublikasikan ke topik khusus perangkat (misalnya DEVICE device/ _id/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 IAM kebijakan 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 menggabungkan 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 Amplify Framework Documentation,.

Kedua contoh melakukan langkah-langkah berikut.

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

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

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

Contoh pertama menggunakan AttachPolicy API operasi langsung di dalam operasi otentikasi. Contoh berikut menunjukkan bagaimana menerapkan API panggilan 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 AuthDisplayfile.js.

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

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 dalam file app.js.

catatan

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