View a markdown version of this page

Tutorial: Membuat otorisasi khusus untuk AWS IoT Core - AWS IoT Core

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

Tutorial: Membuat otorisasi khusus untuk AWS IoT Core

Tutorial ini menunjukkan langkah-langkah untuk membuat, memvalidasi, dan menggunakan Otentikasi Kustom dengan menggunakan AWS CLI. Secara opsional, menggunakan tutorial ini, Anda dapat menggunakan Postman untuk mengirim data AWS IoT Core dengan menggunakan HTTP Publish API.

Tutorial ini menunjukkan cara membuat contoh fungsi Lambda yang mengimplementasikan logika otorisasi dan otentikasi dan otorisasi kustom menggunakan create-authorizer panggilan dengan penandatanganan token diaktifkan. Authorizer kemudian divalidasi menggunakantest-invoke-authorizer, dan akhirnya Anda dapat mengirim data ke AWS IoT Core dengan menggunakan HTTP Publish API ke topik uji MQTT. Permintaan sampel akan menentukan otorizer untuk dipanggil dengan menggunakan x-amz-customauthorizer-name header dan meneruskan token-key-name dan di header permintaan. x-amz-customauthorizer-signature

Apa yang akan Anda pelajari dalam tutorial ini:
  • Cara membuat fungsi Lambda untuk menjadi pengendali otorizer kustom

  • Cara membuat otorisasi khusus menggunakan AWS CLI dengan penandatanganan token diaktifkan

  • Cara menguji otorisasi kustom Anda menggunakan perintah test-invoke-authorizer

  • Cara menerbitkan topik MQTT dengan menggunakan Postman dan memvalidasi permintaan dengan otorizer kustom Anda

Tutorial ini membutuhkan waktu sekitar 60 menit untuk menyelesaikannya.

Sebelum memulai tutorial ini, pastikan Anda memiliki:
  • Penyiapan Akun AWS

    Anda akan membutuhkan AWS IoT konsol Anda Akun AWS untuk menyelesaikan tutorial ini.

    Akun yang Anda gunakan untuk tutorial ini bekerja paling baik jika menyertakan setidaknya kebijakan terkel AWS ola ini:

    penting

    Kebijakan IAM yang digunakan dalam tutorial ini lebih permisif daripada yang harus Anda ikuti dalam implementasi produksi. Di lingkungan produksi, pastikan bahwa kebijakan akun dan sumber daya hanya memberikan izin yang diperlukan.

    Saat Anda membuat kebijakan IAM untuk produksi, tentukan akses apa yang dibutuhkan pengguna dan peran, lalu rancang kebijakan yang memungkinkan mereka hanya melakukan tugas-tugas tersebut.

    Untuk informasi selengkapnya, lihat Praktik terbaik keamanan di IAM

  • Memasang AWS CLI

    Untuk informasi tentang cara menginstal AWS CLI, lihat Meng instal AWS CLI. Tutorial ini membutuhkan AWS CLI versi aws-cli/2.1.3 Python/3.7.4 Darwin/18.7.0 exe/x86_64 atau yang lebih baru.

  • Alat OpenSSL

    Contoh-contoh dalam tutorial ini menggunakan LibreSSL 2.6.5. Anda juga dapat menggunakan alat OpenSSL v1.1.1i untuk tutorial ini.

  • Meninjau AWS Lambda selayang pandang

    Jika Anda belum pernah menggunakan AWS Lambda sebelumnya, tinjau AWS Lambda dan Memulai dengan Lambda untuk mempelajari istilah dan konsepnya.

  • Meninjau cara membangun permintaan di Postman

    Untuk informasi selengkapnya, lihat Membangun permintaan.

  • Dihapus otorisasi kustom dari tutorial sebelumnya

    Anda hanya Akun AWS dapat memiliki sejumlah otorisasi kustom yang dikonfigurasi pada satu waktu. Untuk informasi tentang cara menghapus otorisasi khusus, lihatLangkah 8: Membersihkan.

Langkah 1: Buat fungsi Lambda untuk otorizer kustom Anda

Otentikasi kustom AWS IoT Core menggunakan sumber daya otorisasi yang Anda buat untuk mengotentikasi dan mengotorisasi klien. Fungsi yang akan Anda buat di bagian ini mengotentikasi dan mengotorisasi klien saat mereka terhubung ke AWS IoT Core dan mengakses AWS IoT sumber daya.

Fungsi Lambda melakukan hal berikut:

  • Jika permintaan berasal daritest-invoke-authorizer, itu mengembalikan kebijakan IAM dengan Deny tindakan.

  • Jika permintaan berasal dari Postman menggunakan HTTP dan actionToken parameter memiliki nilaiallow, ia mengembalikan kebijakan IAM dengan tindakanAllow. Jika tidak, ia mengembalikan kebijakan IAM dengan Deny tindakan.

Untuk membuat fungsi Lambda untuk otorizer kustom Anda
  1. Di konsol Lambda, buka Fungsi.

  2. Pilih Buat fungsi.

  3. Konfir masikan Penulis dari awal dipilih.

  4. Di bawah Informasi Dasar:

    1. Di Nama fungsi, masukkancustom-auth-function.

    2. Dalam Runtime, konfirmasikan Node.js 18.x

  5. Pilih Buat fungsi.

    Lambda menciptakan Node.js fungsi dan peran eksekusi yang memberikan izin fungsi untuk mengunggah log. Fungsi Lambda mengambil peran eksekusi saat Anda memanggil fungsi Anda dan menggunakan peran eksekusi untuk membuat kredenSIAL untuk AWS SDK dan membaca data dari sumber peristiwa.

  6. Untuk melihat kode fungsi dan konfigurasi di AWS Cloud9 editor, pilih custom-auth-function di jendela desainer, lalu pilih index.js di panel navigasi editor.

    Untuk bahasa scripting seperti Node.js, Lambda menyertakan fungsi dasar yang mengembalikan respons sukses. Anda dapat menggunakan AWS Cloud9 editor untuk mengedit fungsi Anda selama kode sumber Anda tidak melebihi 3 MB.

  7. Ganti kode index.js di editor dengan kode berikut:

    // A simple Lambda function for an authorizer. It demonstrates // How to parse a CLI and Http password to generate a response. export const handler = async (event, context, callback) => { //Http parameter to initiate allow/deny request const HTTP_PARAM_NAME='actionToken'; const ALLOW_ACTION = 'Allow'; const DENY_ACTION = 'Deny'; //Event data passed to Lambda function var event_str = JSON.stringify(event); console.log('Complete event :'+ event_str); //Read protocolData from the event json passed to Lambda function var protocolData = event.protocolData; console.log('protocolData value---> ' + protocolData); //Get the dynamic account ID from function's ARN to be used // as full resource for IAM policy var ACCOUNT_ID = context.invokedFunctionArn.split(":")[4]; console.log("ACCOUNT_ID---"+ACCOUNT_ID); //Get the dynamic region from function's ARN to be used // as full resource for IAM policy var REGION = context.invokedFunctionArn.split(":")[3]; console.log("REGION---"+REGION); //protocolData data will be undefined if testing is done via CLI. // This will help to test the set up. if (protocolData === undefined) { //If CLI testing, pass deny action as this is for testing purpose only. console.log('Using the test-invoke-authorizer cli for testing only'); callback(null, generateAuthResponse(DENY_ACTION,ACCOUNT_ID,REGION)); } else{ //Http Testing from Postman //Get the query string from the request var queryString = event.protocolData.http.queryString; console.log('queryString values -- ' + queryString); /* global URLSearchParams */ const params = new URLSearchParams(queryString); var action = params.get(HTTP_PARAM_NAME); if(action!=null && action.toLowerCase() === 'allow'){ callback(null, generateAuthResponse(ALLOW_ACTION,ACCOUNT_ID,REGION)); }else{ callback(null, generateAuthResponse(DENY_ACTION,ACCOUNT_ID,REGION)); } } }; // Helper function to generate the authorization IAM response. var generateAuthResponse = function(effect,ACCOUNT_ID,REGION) { var full_resource = "arn:aws:iot:"+ REGION + ":" + ACCOUNT_ID + ":*"; console.log("full_resource---"+full_resource); var authResponse = {}; authResponse.isAuthenticated = true; authResponse.principalId = 'principalId'; var policyDocument = {}; policyDocument.Version = '2012-10-17'; policyDocument.Statement = []; var statement = {}; statement.Action = 'iot:*'; statement.Effect = effect; statement.Resource = full_resource; policyDocument.Statement[0] = statement; authResponse.policyDocuments = [policyDocument]; authResponse.disconnectAfterInSeconds = 3600; authResponse.refreshAfterInSeconds = 600; console.log('custom auth policy function called from http'); console.log('authResponse --> ' + JSON.stringify(authResponse)); console.log(authResponse.policyDocuments[0]); return authResponse; }
  8. Pilih Deploy.

  9. Setelah Perubahan diterapkan muncul di atas editor:

    1. Gulir ke bagian Ikhtisar fungsi di atas editor.

    2. Salin Fungsi ARN dan simpan untuk digunakan nanti dalam tutorial ini.

  10. Uji fungsi Anda.

    1. Pilih tab Tes.

    2. Menggunakan pengaturan pengujian default, pilih Invoke.

    3. Jika pengujian berhasil, di hasil eksekusi, buka tampilan Detail. Anda akan melihat dokumen kebijakan yang dikembalikan fungsi tersebut.

      Jika pengujian gagal atau Anda tidak melihat dokumen kebijakan, tinjau kode untuk menemukan dan memperbaiki kesalahan.

Langkah 2: Buat pasangan kunci publik dan pribadi untuk otorizer kustom Anda

Authorizer kustom Anda memerlukan kunci publik dan pribadi untuk mengotentikasinya. Perintah di bagian ini menggunakan alat OpenSSL untuk membuat pasangan kunci ini.

Untuk membuat pasangan kunci publik dan pribadi untuk otorisasi kustom Anda
  1. Buat file kunci pribadi.

    openssl genrsa -out private-key.pem 4096
  2. Verifikasi file kunci pribadi yang baru saja Anda buat.

    openssl rsa -check -in private-key.pem -noout

    Jika perintah tidak menampilkan kesalahan apa pun, file kunci pribadi valid.

  3. Buat file kunci publik.

    openssl rsa -in private-key.pem -pubout -out public-key.pem
  4. Verifikasi file kunci publik.

    openssl pkey -inform PEM -pubin -in public-key.pem -noout

    Jika perintah tidak menampilkan kesalahan apa pun, file kunci publik valid.

Langkah 3: Buat sumber otorizer kustom dan otorisasinya

O AWS IoT torisasi kustom adalah sumber daya yang mengikat semua elemen yang dibuat pada langkah sebelumnya. Di bagian ini, Anda akan membuat resource otorizer kustom dan memberinya izin untuk menjalankan fungsi Lambda yang Anda buat sebelumnya. Anda dapat membuat sumber daya otorisasi kustom dengan menggunakan AWS IoT konsol, AWS CLI, atau AWS API.

Untuk tutorial ini, Anda hanya perlu membuat satu otorizer kustom. Bagian ini menjelaskan cara membuat dengan menggunakan AWS IoT konsol dan AWS CLI, sehingga Anda dapat menggunakan metode yang paling nyaman bagi Anda. Tidak ada perbedaan antara sumber daya otorizer kustom yang dibuat oleh salah satu metode.

Membuat sumber daya otorizer kustom

Pilih salah satu opsi ini untuk membuat sumber daya otorisasi kustom Anda
Untuk membuat otorisasi kustom (konsol)
  1. Buka halaman ku stom otorisasi AWS IoT konsol, dan pilih Buat Author izer.

  2. Dalam Buat Otorizer:

    1. Di nama Authorizer, masukkanmy-new-authorizer.

    2. Dalam status Authorizer, centang Aktif.

    3. Dalam fungsi Authorizer, pilih fungsi Lambda yang Anda buat sebelumnya.

    4. Dalam validasi Token - opsional:

      1. Aktifkan validasi Token.

      2. Di Nama kunci Token, masukkantokenKeyName.

      3. Pilih Tambah kunci.

      4. Di Nama kunci, masukkanFirstKey.

      5. Di kunci publik, masukkan isi public-key.pem file. Pastikan untuk menyertakan baris dari file dengan -----BEGIN PUBLIC KEY----- dan -----END PUBLIC KEY----- dan jangan menambahkan atau menghapus umpan baris, pengembalian kereta, atau karakter lain dari konten file. String yang Anda masukkan akan terlihat seperti contoh ini.

        -----BEGIN PUBLIC KEY----- MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAvEBzOk4vhN+3LgslvEWt sLCqNmt5Damas3bmiTRvq2gjRJ6KXGTGQChqArAJwL1a9dkS9+maaXC3vc6xzx9z QPu/vQOe5tyzz1MsKdmtFGxMqQ3qjEXAMPLEOmqyUKPP5mff58k6ePSfXAnzBH0q lg2HioefrpU5OSAnpuRAjYKofKjbc2Vrn6N2G7hV+IfTBvCElf0csalS/Rk4phD5 oa4Y0GHISRnevypg5C8n9Rrz91PWGqP6M/q5DNJJXjMyleG92hQgu1N696bn5Dw8 FhedszFa6b2x6xrItZFzewNQkPMLMFhNrQIIyvshtT/F1LVCS5+v8AQ8UGGDfZmv QeqAMAF7WgagDMXcfgKSVU8yid2sIm56qsCLMvD2Sq8Lgzpey9N5ON1o1Cvldwvc KrJJtgwW6hVqRGuShnownLpgG86M6neZ5sRMbVNZO8OzcobLngJ0Ibw9KkcUdklW gvZ6HEJqBY2XE70iEXAMPLETPHzhqvK6Ei1HGxpHsXx6BNft582J1VpgYjXha8oa /NN7l7Zbj/euAb41IVtmX8JrD9z613d1iM5L8HluJlUzn62Q+VeNV2tdA7MfPfMC 8btGYladFAnitThaz6+F0VSBJPu7pZQoLnqyEp5zLMtF+kFl2yOBmGAP0RBivRd9 JWBUCG0bqcLQPeQyjbXSOfUCAwEAAQ== -----END PUBLIC KEY-----
  3. Pilih Buat otorisasi.

  4. Jika sumber daya otorisasi kustom dibuat, Anda akan melihat daftar otorisasi kustom dan otorisasi kustom baru Anda akan muncul dalam daftar dan Anda dapat melanjutkan ke bagian berikutnya untuk mengujinya.

    Jika Anda melihat kesalahan, tinjau kesalahan tersebut dan coba buat otorisasi kustom Anda lagi dan periksa kembali entri tersebut. Perhatikan bahwa setiap sumber otorizer kustom harus memiliki nama yang unik.

Untuk membuat otorisasi khusus (AWS CLI)
  1. Ganti nilai Anda untuk authorizer-function-arn dantoken-signing-public-keys, lalu jalankan perintah berikut:

    aws iot create-authorizer \ --authorizer-name "my-new-authorizer" \ --token-key-name "tokenKeyName" \ --status ACTIVE \ --no-signing-disabled \ --authorizer-function-arn "arn:aws:lambda:Region:57EXAMPLE833:function:custom-auth-function" \ --token-signing-public-keys FirstKey="-----BEGIN PUBLIC KEY----- MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAvEBzOk4vhN+3LgslvEWt sLCqNmt5Damas3bmiTRvq2gjRJ6KXGTGQChqArAJwL1a9dkS9+maaXC3vc6xzx9z QPu/vQOe5tyzz1MsKdmtFGxMqQ3qjEXAMPLEOmqyUKPP5mff58k6ePSfXAnzBH0q lg2HioefrpU5OSAnpuRAjYKofKjbc2Vrn6N2G7hV+IfTBvCElf0csalS/Rk4phD5 oa4Y0GHISRnevypg5C8n9Rrz91PWGqP6M/q5DNJJXjMyleG92hQgu1N696bn5Dw8 FhedszFa6b2x6xrItZFzewNQkPMLMFhNrQIIyvshtT/F1LVCS5+v8AQ8UGGDfZmv QeqAMAF7WgagDMXcfgKSVU8yid2sIm56qsCLMvD2Sq8Lgzpey9N5ON1o1Cvldwvc KrJJtgwW6hVqRGuShnownLpgG86M6neZ5sRMbVNZO8OzcobLngJ0Ibw9KkcUdklW gvZ6HEJqBY2XE70iEXAMPLETPHzhqvK6Ei1HGxpHsXx6BNft582J1VpgYjXha8oa /NN7l7Zbj/euAb41IVtmX8JrD9z613d1iM5L8HluJlUzn62Q+VeNV2tdA7MfPfMC 8btGYladFAnitThaz6+F0VSBJPu7pZQoLnqyEp5zLMtF+kFl2yOBmGAP0RBivRd9 JWBUCG0bqcLQPeQyjbXSOfUCAwEAAQ== -----END PUBLIC KEY-----"
    Di mana:
    • Nil authorizer-function-arn ainya adalah Nama Sumber Daya Amazon (ARN) dari fungsi Lambda yang Anda buat untuk otorisasi kustom Anda.

    • token-signing-public-keysNilai termasuk nama kunci,FirstKey, dan isi public-key.pem file. Pastikan untuk menyertakan baris dari file dengan -----BEGIN PUBLIC KEY----- dan -----END PUBLIC KEY----- dan jangan menambahkan atau menghapus umpan baris, pengembalian kereta, atau karakter lain dari konten file.

      Catatan: hati-hati memasukkan kunci publik karena setiap perubahan pada nilai kunci publik membuatnya tidak dapat digunakan.

  2. Jika otorizer kustom dibuat, perintah mengembalikan nama dan ARN sumber daya baru, seperti berikut ini.

    { "authorizerName": "my-new-authorizer", "authorizerArn": "arn:aws:iot:Region:57EXAMPLE833:authorizer/my-new-authorizer" }

    Simpan authorizerArn nilai untuk digunakan pada langkah berikutnya.

    Ingatlah bahwa setiap sumber otorizer kustom harus memiliki nama yang unik.

Mengotorisasi sumber daya otorizer kustom

Di bagian ini, Anda akan memberikan izin sumber otorizer kustom yang baru saja Anda buat izin untuk menjalankan fungsi Lambda. Untuk memberikan izin, Anda dapat menggunakan perintah CLI add-permissions.

Berikan izin ke fungsi Lambda Anda menggunakan AWS CLI
  1. Setelah memasukkan nilai Anda, masukkan perintah berikut. Perhatikan bahwa nil statement-id ainya harus unik. Ganti Id-1234 dengan nilai lain jika Anda telah menjalankan tutorial ini sebelumnya atau jika Anda mendapatkan ResourceConflictException kesalahan.

    aws lambda add-permission \ --function-name "custom-auth-function" \ --principal "iot.amazonaws.com" \ --action "lambda:InvokeFunction" \ --statement-id "Id-1234" \ --source-arn authorizerArn
  2. Jika perintah berhasil, ia mengembalikan pernyataan izin, seperti contoh ini. Anda dapat melanjutkan ke bagian berikutnya untuk menguji otorisasi kustom.

    { "Statement": "{\"Sid\":\"Id-1234\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"iot.amazonaws.com\"},\"Action\":\"lambda:InvokeFunction\",\"Resource\":\"arn:aws:lambda:Region:57EXAMPLE833:function:custom-auth-function\",\"Condition\":{\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:lambda:Region:57EXAMPLE833:function:custom-auth-function\"}}}" }

    Jika perintah tidak berhasil, ia mengembalikan kesalahan, seperti contoh ini. Anda harus meninjau dan memperbaiki kesalahan sebelum melanjutkan.

    An error occurred (AccessDeniedException) when calling the AddPermission operation: User: arn:aws:iam::57EXAMPLE833:user/EXAMPLE-1 is not authorized to perform: lambda:AddPer mission on resource: arn:aws:lambda:Region:57EXAMPLE833:function:custom-auth-function

Langkah 4: Uji otorizer dengan memanggil test-invoke-authorizer

Dengan semua sumber daya yang ditentukan, di bagian ini, Anda akan memanggil test-invoke-authorizer dari baris perintah untuk menguji izin otorisasi.

Perhatikan bahwa ketika memanggil otorizer dari baris perintah, tidak protocolData ditentukan, sehingga otorisasi akan selalu mengembalikan dokumen DENY. Namun, pengujian ini mengonfirmasi bahwa otorizer kustom dan fungsi Lambda Anda dikonfigurasi dengan benar--bahkan jika tidak sepenuhnya menguji fungsi Lambda.

Untuk menguji otorisasi kustom Anda dan fungsi Lambda-nya dengan menggunakan AWS CLI
  1. Di direktori yang memiliki private-key.pem file yang Anda buat pada langkah sebelumnya, jalankan perintah berikut.

    echo -n "tokenKeyValue" | openssl dgst -sha256 -sign private-key.pem | openssl base64 -A

    Perintah ini membuat string tanda tangan untuk digunakan pada langkah berikutnya. String tanda tangan terlihat seperti ini:

    dBwykzlb+fo+JmSGdwoGr8dyC2qB/IyLefJJr+rbCvmu9Jl4KHAA9DG+V+MMWu09YSA86+64Y3Gt4tOykpZqn9mn VB1wyxp+0bDZh8hmqUAUH3fwi3fPjBvCa4cwNuLQNqBZzbCvsluv7i2IMjEg+CPY0zrWt1jr9BikgGPDxWkjaeeh bQHHTo357TegKs9pP30Uf4TrxypNmFswA5k7QIc01n4bIyRTm90OyZ94R4bdJsHNig1JePgnuOBvMGCEFE09jGjj szEHfgAUAQIWXiVGQj16BU1xKpTGSiTAwheLKUjITOEXAMPLECK3aHKYKY+d1vTvdthKtYHBq8MjhzJ0kggbt29V QJCb8RilN/P5+vcVniSXWPplyB5jkYs9UvG08REoy64AtizfUhvSul/r/F3VV8ITtQp3aXiUtcspACi6ca+tsDuX f3LzCwQQF/YSUy02u5XkWn+sto6KCkpNlkD0wU8gl3+kOzxrthnQ8gEajd5Iylx230iqcXo3osjPha7JDyWM5o+K EWckTe91I1mokDr5sJ4JXixvnJTVSx1li49IalW4en1DAkc1a0s2U2UNm236EXAMPLELotyh7h+flFeloZlAWQFH xRlXsPqiVKS1ZIUClaZWprh/orDJplpiWfBgBIOgokJIDGP9gwhXIIk7zWrGmWpMK9o=

    Salin string tanda tangan ini untuk digunakan pada langkah berikutnya. Berhati-hatilah untuk tidak memasukkan karakter tambahan atau meninggalkannya.

  2. Dalam perintah ini, ganti token-signature nilai dengan string tanda tangan dari langkah sebelumnya dan jalankan perintah ini untuk menguji otorizer Anda.

    aws iot test-invoke-authorizer \ --authorizer-name my-new-authorizer \ --token tokenKeyValue \ --token-signature dBwykzlb+fo+JmSGdwoGr8dyC2qB/IyLefJJr+rbCvmu9Jl4KHAA9DG+V+MMWu09YSA86+64Y3Gt4tOykpZqn9mnVB1wyxp+0bDZh8hmqUAUH3fwi3fPjBvCa4cwNuLQNqBZzbCvsluv7i2IMjEg+CPY0zrWt1jr9BikgGPDxWkjaeehbQHHTo357TegKs9pP30Uf4TrxypNmFswA5k7QIc01n4bIyRTm90OyZ94R4bdJsHNig1JePgnuOBvMGCEFE09jGjjszEHfgAUAQIWXiVGQj16BU1xKpTGSiTAwheLKUjITOEXAMPLECK3aHKYKY+d1vTvdthKtYHBq8MjhzJ0kggbt29VQJCb8RilN/P5+vcVniSXWPplyB5jkYs9UvG08REoy64AtizfUhvSul/r/F3VV8ITtQp3aXiUtcspACi6ca+tsDuXf3LzCwQQF/YSUy02u5XkWn+sto6KCkpNlkD0wU8gl3+kOzxrthnQ8gEajd5Iylx230iqcXo3osjPha7JDyWM5o+KEWckTe91I1mokDr5sJ4JXixvnJTVSx1li49IalW4en1DAkc1a0s2U2UNm236EXAMPLELotyh7h+flFeloZlAWQFHxRlXsPqiVKS1ZIUClaZWprh/orDJplpiWfBgBIOgokJIDGP9gwhXIIk7zWrGmWpMK9o=

    Jika perintah berhasil, ia mengembalikan informasi yang dihasilkan oleh fungsi otorizer kustom Anda, seperti contoh ini.

    { "isAuthenticated": true, "principalId": "principalId", "policyDocuments": [ "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Action\":\"iot:*\",\"Effect\":\"Deny\",\"Resource\":\"arn:aws:iot:Region:57EXAMPLE833:*\"}]}" ], "refreshAfterInSeconds": 600, "disconnectAfterInSeconds": 3600 }

    Jika perintah mengembalikan kesalahan, tinjau kesalahan dan periksa kembali perintah yang Anda gunakan di bagian ini.

Langkah 5: Uji penerbitan pesan MQTT menggunakan Postman

  1. Untuk mendapatkan titik akhir data perangkat Anda dari baris perintah, panggil describe-endpoint seperti yang ditunjukkan di sini

    aws iot describe-endpoint --output text --endpoint-type iot:Data-ATS

    Simpan alamat ini untuk digunakan sebagai device_data_endpoint_address di langkah selanjutnya.

  2. Buka jendela Postman baru dan buat permintaan HTTP POST baru.

    1. Dari komputer Anda, buka aplikasi Postman.

    2. Di Postman, di menu File, pilih Baru... .

    3. Di kotak dialog Baru, pilih Per mintaan.

    4. Di Simpan permintaan,

      1. Di Nama permintaan masukkanCustom authorizer test request.

      2. Di Pilih koleksi atau folder untuk disimpan: pilih atau buat koleksi tempat menyimpan permintaan ini.

      3. Pilih Simpan ke collection_name.

  3. Buat permintaan POST untuk menguji otorizer kustom Anda.

    1. Di pemilih metode permintaan di sebelah bidang URL, pilih POST.

    2. Di bidang URL, buat URL untuk permintaan Anda dengan menggunakan URL berikut dengan perintah device_data_endpoint_address from the describe-endpoint pada langkah sebelumnya.

      https://device_data_endpoint_address:443/topics/test/cust-auth/topic?qos=0&actionToken=allow

      Perhatikan bahwa URL ini menyertakan parameter actionToken=allow kueri yang akan memberi tahu fungsi Lambda Anda untuk mengembalikan dokumen kebijakan yang memungkinkan akses ke AWS IoT. Setelah Anda memasukkan URL, parameter kueri juga muncul di tab Params Postman.

    3. Di tab Auth, di bidang Type, pilih No Aut h.

    4. Di tab Header:

      1. Jika ada kunci Host yang dicentang, hapus centang yang ini.

      2. Di bagian bawah daftar header tambahkan header baru ini dan konfirmasikan bahwa mereka diperiksa. Ganti Host nilai dengan Anda device_data_endpoint_address dan x-amz-customauthorizer-signature nilai dengan string tanda tangan yang Anda gunakan dengan test-invoke-authorize perintah di bagian sebelumnya.

        Key Nilai
        x-amz-customauthorizer-name my-new-authorizer
        Host device_data_endpoint_address
        tokenKeyName tokenKeyValue
        x-amz-customauthorizer-signature dBwykzlb+fo+JmSGdwoGr8dyC2qB/IyLefJJr+rbCvmu9Jl4KHAA9DG+V+MMWu09YSA86+64Y3Gt4tOykpZqn9mnVB1wyxp+0bDZh8hmqUAUH3fwi3fPjBvCa4cwNuLQNqBZzbCvsluv7i2IMjEg+CPY0zrWt1jr9BikgGPDxWkjaeehbQHHTo357TegKs9pP30Uf4TrxypNmFswA5k7QIc01n4bIyRTm90OyZ94R4bdJsHNig1JePgnuOBvMGCEFE09jGjjszEHfgAUAQIWXiVGQj16BU1xKpTGSiTAwheLKUjITOEXAMPLECK3aHKYKY+d1vTvdthKtYHBq8MjhzJ0kggbt29VQJCb8RilN/P5+vcVniSXWPplyB5jkYs9UvG08REoy64AtizfUhvSul/r/F3VV8ITtQp3aXiUtcspACi6ca+tsDuXf3LzCwQQF/YSUy02u5XkWn+sto6KCkpNlkD0wU8gl3+kOzxrthnQ8gEajd5Iylx230iqcXo3osjPha7JDyWM5o+KEWckTe91I1mokDr5sJ4JXixvnJTVSx1li49IalW4en1DAkc1a0s2U2UNm236EXAMPLELotyh7h+flFeloZlAWQFHxRlXsPqiVKS1ZIUClaZWprh/orDJplpiWfBgBIOgokJIDGP9gwhXIIk7zWrGmWpMK9o=
    5. Di tab Tubuh:

      1. Di kotak opsi format data, pilih Raw.

      2. Dalam daftar tipe data, pilih JavaScript.

      3. Di bidang teks, masukkan payload pesan JSON ini untuk pesan pengujian Anda:

        { "data_mode": "test", "vibration": 200, "temperature": 40 }
  4. Pilih Kirim untuk mengirim permintaan.

    Jika permintaan berhasil, ia mengembalikan:

    { "message": "OK", "traceId": "ff35c33f-409a-ea90-b06f-fbEXAMPLE25c" }

    Respons yang berhasil menunjukkan bahwa otorisasi kustom Anda mengizinkan koneksi ke AWS IoT dan bahwa pesan pengujian dikirimkan ke broker in AWS IoT Core.

    Jika mengembalikan kesalahan, tinjau pesan kesalahandevice_data_endpoint_address, string tanda tangan, dan nilai header lainnya.

Simpan permintaan ini di Postman untuk digunakan di bagian berikutnya.

Langkah 6: Lihat pesan di klien uji MQTT

Pada langkah sebelumnya, Anda mengirim pesan perangkat simulasi ke AWS IoT dengan menggunakan Postman. Respons yang berhasil menunjukkan bahwa otorisasi kustom Anda mengizinkan koneksi ke AWS IoT dan bahwa pesan pengujian dikirimkan ke broker in AWS IoT Core. Di bagian ini, Anda akan menggunakan klien uji MQTT di AWS IoT konsol untuk melihat konten pesan dari pesan itu seperti perangkat dan layanan lain.

Untuk melihat pesan pengujian yang disahkan oleh otorizer kustom Anda
  1. Di AWS IoT konsol, buka klien uji MQTT.

  2. Di tab Berlangganan topik, di filter Topik, masukkantest/cust-auth/topic, yang merupakan topik pesan yang digunakan dalam contoh Postman dari bagian sebelumnya.

  3. Pilih Langganan.

    Jaga agar jendela ini terlihat untuk langkah berikutnya.

  4. Di Postman, dalam permintaan yang Anda buat untuk bagian sebelumnya, pilih Kirim.

    Tinjau tanggapan untuk memastikannya berhasil. Jika tidak, pecahkan kesalahan seperti yang dijelaskan di bagian sebelumnya.

  5. Di klien uji MQTT, Anda akan melihat entri baru yang menunjukkan topik pesan dan, jika diperluas, payload pesan dari permintaan yang Anda kirim dari Postman.

    Jika Anda tidak melihat pesan Anda di klien uji MQTT, berikut adalah beberapa hal yang perlu diperiksa:

    • Pastikan permintaan Postman Anda berhasil dikembalikan. Jika AWS IoT menolak koneksi dan mengembalikan kesalahan, pesan dalam permintaan tidak diteruskan ke broker pesan.

    • Pastikan Akun AWS dan Wilayah AWS digunakan untuk membuka AWS IoT konsol sama dengan yang Anda gunakan di URL Postman.

    • Pastikan Anda menggunakan titik akhir yang sesuai untuk otorisasi kustom. Titik akhir IoT default mungkin tidak mendukung penggunaan otorisasi khusus dengan fungsi Lambda. Sebagai gantinya, Anda dapat menggunakan konfigurasi domain untuk menentukan titik akhir baru dan kemudian menentukan titik akhir tersebut untuk otorisasi kustom.

    • Pastikan Anda telah memasukkan topik dengan benar di klien uji MQTT. Filter topik peka huruf besar/kecil. Jika ragu, Anda juga dapat berlangganan # topik, yang berlangganan semua pesan MQTT yang melewati broker pesan Akun AWS dan Wilayah AWS digunakan untuk membuka konsol. AWS IoT

Langkah 7: Tinjau hasil dan langkah selanjutnya

Dalam tutorial ini:
  • Anda membuat fungsi Lambda untuk menjadi pengendali otorizer kustom

  • Anda membuat otorisasi khusus dengan penandatanganan token diaktifkan

  • Anda menguji otorisasi kustom Anda menggunakan perintah test-invoke-authorizer

  • Anda menerbitkan topik MQTT dengan menggunakan Postman dan memvalidasi permintaan dengan otorizer kustom Anda

  • Anda menggunakan klien uji MQTT untuk melihat pesan yang dikirim dari tes Postman Anda

Langkah selanjutnya

Setelah Anda mengirim beberapa pesan dari Postman untuk memverifikasi bahwa otorizer kustom berfungsi, cobalah bereksperimen untuk melihat bagaimana mengubah aspek yang berbeda dari tutorial ini mempengaruhi hasil. Berikut adalah beberapa contoh untuk membantu Anda memulai.

  • Ubah string tanda tangan sehingga tidak lagi valid untuk melihat bagaimana upaya koneksi yang tidak sah ditangani. Anda akan mendapatkan respons kesalahan, seperti ini, dan pesan tersebut seharusnya tidak muncul di klien uji MQTT.

    { "message": "Forbidden", "traceId": "15969756-a4a4-917c-b47a-5433e25b1356" }
  • Untuk mempelajari selengkapnya tentang cara menemukan kesalahan yang mungkin terjadi saat Anda mengembangkan dan menggunakan AWS IoT aturan, lihatMemantau AWS IoT.

Langkah 8: Membersihkan

Jika Anda ingin mengulangi tutorial ini, Anda mungkin perlu menghapus beberapa otorisasi kustom Anda. Anda hanya Akun AWS dapat memiliki sejumlah otorisasi kustom yang dikonfigurasi pada satu waktu dan Anda bisa mendapatkannya LimitExceededException ketika Anda mencoba menambahkan yang baru tanpa menghapus otorisasi kustom yang ada.

Untuk menghapus otorisasi khusus (konsol)
  1. Buka halaman Otorisasi kustom AWS IoT konsol, dan dalam daftar otorisasi khusus, temukan otorisasi khusus untuk dihapus.

  2. Buka halaman detail otorisasi kustom dan, dari menu Tind akan, pilih Edit.

  3. Hapus centang pada Aktifkan otorizer, lalu pilih Perbarui.

    Anda tidak dapat menghapus otorisasi kustom saat aktif.

  4. Dari halaman detail otorisasi kustom, buka menu Tind akan, dan pilih H apus.

Untuk menghapus otorisasi khusus (AWS CLI)
  1. Buat daftar otorisasi kustom yang telah Anda instal dan temukan nama otorisasi kustom yang ingin Anda hapus.

    aws iot list-authorizers
  2. Setel otorizer kustom inactive dengan menjalankan perintah ini setelah mengganti Custom_Auth_Name dengan otorizer authorizerName kustom untuk dihapus.

    aws iot update-authorizer --status INACTIVE --authorizer-name Custom_Auth_Name
  3. Hapus otorisasi kustom dengan menjalankan perintah ini setelah mengganti Custom_Auth_Name dengan otorizer authorizerName kustom untuk dihapus.

    aws iot delete-authorizer --authorizer-name Custom_Auth_Name