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 Custom Authentication 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 khusus menggunakan panggilan dengan penandatanganan token diaktifkan. create-authorizer Authorizer kemudian divalidasi menggunakantest-invoke-authorizer, dan akhirnya Anda dapat mengirim data AWS IoT Core dengan menggunakan HTTP Publish API ke topik MQTT pengujian. Permintaan sampel akan menentukan otorisasi untuk dipanggil dengan menggunakan x-amz-customauthorizer-name header dan meneruskan header token-key-name and x-amz-customauthorizer-signature in request.

Apa yang akan Anda pelajari dalam tutorial ini:
  • Cara membuat fungsi Lambda menjadi penangan otorisasi khusus

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

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

  • Cara mempublikasikan topik MQTT dengan menggunakan Postman dan memvalidasi permintaan dengan otorisasi khusus Anda

Tutorial ini membutuhkan waktu sekitar 60 menit untuk menyelesaikannya.

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

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

    Akun yang Anda gunakan untuk tutorial ini berfungsi paling baik jika menyertakan setidaknya kebijakan AWS terkelola ini:

    penting

    Kebijakan IAM yang digunakan dalam tutorial ini lebih permisif daripada yang harus Anda ikuti dalam implementasi produksi. Di lingkungan produksi, pastikan kebijakan akun dan sumber daya Anda 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 tersebut.

    Untuk informasi selengkapnya, lihat Praktik terbaik keamanan di IAM

  • Menginstal AWS CLI

    Untuk informasi tentang cara menginstal AWS CLI, lihat Menginstal 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 dalam tutorial ini menggunakan LibreSSL 2.6.5. Anda juga dapat menggunakan alat OpenSSL v1.1.1i untuk tutorial ini.

  • Meninjau AWS Lambdaikhtisar

    Jika Anda belum pernah menggunakannya AWS Lambda sebelumnya, tinjau AWS Lambdadan Mulai dengan Lambda untuk mempelajari istilah dan konsepnya.

  • Meninjau cara membuat permintaan di Postman

    Untuk informasi selengkapnya, lihat Permintaan bangunan.

  • Dihapus otorisasi kustom dari tutorial sebelumnya

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

Langkah 1: Buat fungsi Lambda untuk otorisasi kustom Anda

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

Fungsi Lambda melakukan hal berikut:

  • Jika permintaan berasaltest-invoke-authorizer, ia 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 otorisasi kustom Anda
  1. Di konsol Lambda, buka Fungsi.

  2. Pilih Buat fungsi.

  3. Konfirmasi Penulis dari awal dipilih.

  4. Di bawah Informasi dasar:

    1. Dalam nama Fungsi, masukkancustom-auth-function.

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

  5. Pilih Buat fungsi.

    Lambda membuat fungsi Node.js dan peran eksekusi yang memberikan izin fungsi untuk mengunggah log. Fungsi Lambda mengasumsikan peran eksekusi saat Anda menjalankan fungsi dan menggunakan peran eksekusi untuk membuat kredensyal AWS SDK dan membaca data dari sumber peristiwa.

  6. Untuk melihat kode dan konfigurasi fungsi di AWS Cloud9editor, pilih custom-auth-functiondi 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 Cloud9editor 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 Uji.

    2. Menggunakan pengaturan pengujian default, pilih Invoke.

    3. Jika tes berhasil, dalam hasil Eksekusi, buka tampilan Detail. Anda akan melihat dokumen kebijakan yang dikembalikan fungsi.

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

Langkah 2: Buat key pair publik dan pribadi untuk otorisasi kustom Anda

Authorizer kustom Anda memerlukan kunci publik dan pribadi untuk mengotentikasi itu. Perintah di bagian ini menggunakan alat OpenSSL untuk membuat key pair ini.

Untuk membuat key pair 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 otorisasi khusus dan otorisasi

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

Untuk tutorial ini, Anda hanya perlu membuat satu otorisasi khusus. 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 otorisasi khusus yang dibuat oleh salah satu metode.

Buat sumber otorisasi kustom

Pilih salah satu opsi ini untuk membuat sumber otorisasi kustom Anda
Untuk membuat otorisasi kustom (konsol)
  1. Buka halaman Custom Authorizer AWS IoT konsol, dan pilih Create Authorizer.

  2. Di Create Authorizer:

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

    2. Dalam status Authorizer, periksa Aktif.

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

    4. Dalam validasi Token - opsional:

      1. Beralih pada validasi Token.

      2. Dalam nama kunci Token, masukkantokenKeyName.

      3. Pilih Tambah kunci.

      4. Dalam Nama kunci, masukkanFirstKey.

      5. Dalam 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 carriage, 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 Authorizer.

  4. Jika sumber 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 dan coba buat otorisasi kustom Anda lagi dan periksa kembali entri. Perhatikan bahwa setiap sumber otorisasi kustom harus memiliki nama yang unik.

Untuk membuat otorisasi kustom ()AWS CLI
  1. Gantikan 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:
    • authorizer-function-arnNilainya adalah Nama Sumber Daya Amazon (ARN) dari fungsi Lambda yang Anda buat untuk otorisasi khusus 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 carriage, 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 otorisasi kustom dibuat, perintah mengembalikan nama dan ARN dari 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.

    Ingat bahwa setiap sumber otorisasi kustom harus memiliki nama yang unik.

Otorisasi sumber otorisasi kustom

Di bagian ini, Anda akan memberikan izin sumber otorisasi khusus yang baru saja Anda buat izin untuk menjalankan fungsi Lambda. Untuk memberikan izin, Anda dapat menggunakan perintah CLI izin tambahan.

Berikan izin ke fungsi Lambda Anda menggunakan AWS CLI
  1. Setelah memasukkan nilai Anda, masukkan perintah berikut. Perhatikan bahwa statement-id nilainya 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 khusus.

    { "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 otorisasi dengan menelepon 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 otorisasi dari baris perintah, tidak protocolData ditentukan, sehingga otorisasi akan selalu mengembalikan dokumen DENY. Namun, pengujian ini mengonfirmasi bahwa otorisasi khusus dan fungsi Lambda Anda dikonfigurasi dengan benar - bahkan jika itu tidak sepenuhnya menguji fungsi Lambda.

Untuk menguji otorisasi kustom Anda dan fungsi Lambda 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 menyertakan 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 otorisasi 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 otorisasi 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 New... .

    3. Di kotak dialog Baru, pilih Permintaan.

    4. Dalam permintaan Simpan,

      1. Dalam nama Permintaan masukkanCustom authorizer test request.

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

      3. Pilih Simpan ke collection_name.

  3. Buat permintaan POST untuk menguji otorisasi kustom Anda.

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

    2. Di bidang URL, buat URL untuk permintaan Anda dengan menggunakan URL berikut dengan device_data_endpoint_address dari perintah 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 Auth.

    4. Di tab Header:

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

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

        Kunci Nilai
        x-amz-customauthorizer-name my-new-authorizer
        Host device_data_endpoint_address
        tokenKeyName tokenKeyValue
        x-amz-customauthorizer-signature dbwykzlb+fo+jms 8dYc2qb/ jjr+rbcvmu9jl4khaa9dg+v+mmwu09ysa86+64y3gt4 9mnvb1wyxp+0bdzh8hmquauh3fwi3 ca4cwnulqnqb 7i2i +pyc2i 0zrwt1jr9bikggp qhhto357 9pp30uf4 a5k7qic01n4biyrtm90oyz94r4bdjshnig1 GdwoGr obvmgcefe09jgjjszehfgauaqiwxivgqj16bu1xkptgsitawhelkujitoexampleCk3ahaqiwxivgqj16bu1xkptgsitawhelkujitoexampleCk3ahaqiwxivgqj16bu1xkptgsitawhelkujitoexampleCk3ahaqiwxivgqj16bu1xkptgsitawhelkujitoexampleCk3ahaqiwxivgqj16bu1xkptgsitaKY+d1 yhbq8mjhzj0kggbt29vqjcb8riln/p5+vcvnisxwplyb5jkys9uvg08reoy64 /r/f3vv8i 3 aci6ca+ 3 IyLef qqf/ysuy02u5 +Sto6K tOykpZqn fPjBv ZzbCvsluv MjEg DxWkjaeehb TegKs TrxypNmFsw JePgnu vTvdthKt AtizfUhvSul TtQp aXiUtcsp tsDuXf LzCw XkWn CkpNlkd0wu8gl3+kozxrthnq8geaJd5iylx230iqcxo3osjpha7jdywm5o+ke 91i1mokdr5sj4jxixvnjtvsx1li49ialw4en1dakc1a0s2u2u2unm236Examplelotyh7h7+ AWQF vks1ziuclazwprh/Ord WckTe BiogokjidGp9gwHxiik7 wpmk9o= flFeloZl HxRlXsPqi JplpiWfBg zWrGm
    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 khusus Anda mengizinkan koneksi ke AWS IoT dan bahwa pesan pengujian dikirimkan ke broker di AWS IoT Core.

    Jika mengembalikan kesalahan, tinjau pesan kesalahan, device_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 pengujian MQTT

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

Untuk melihat pesan pengujian yang diotorisasi oleh otorisasi 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 Tukang Pos dari bagian sebelumnya.

  3. Pilih Langganan.

    Jaga agar jendela ini terlihat untuk langkah selanjutnya.

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

    Tinjau tanggapan untuk memastikan itu berhasil. Jika tidak, pecahkan masalah kesalahan seperti yang dijelaskan bagian sebelumnya.

  5. Di klien pengujian MQTT, Anda akan melihat entri baru yang menunjukkan topik pesan dan, jika diperluas, muatan pesan dari permintaan yang Anda kirim dari Tukang Pos.

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

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

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

    • Pastikan Anda telah memasukkan topik dengan benar di klien pengujian 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 penangan otorisasi khusus

  • 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 otorisasi khusus Anda

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

Langkah selanjutnya

Setelah Anda mengirim beberapa pesan dari Postman untuk memverifikasi bahwa otorisasi kustom berfungsi, coba bereksperimen untuk melihat bagaimana mengubah berbagai aspek tutorial ini memengaruhi 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 tidak akan muncul di klien pengujian MQTT.

    { "message": "Forbidden", "traceId": "15969756-a4a4-917c-b47a-5433e25b1356" }
  • Untuk mempelajari lebih lanjut tentang cara menemukan kesalahan yang mungkin terjadi saat Anda mengembangkan dan menggunakan AWS IoT aturan, lihatPemantauan 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 khusus yang dikonfigurasi pada satu waktu dan Anda bisa mendapatkan LimitExceededException ketika Anda mencoba menambahkan yang baru tanpa menghapus otorisasi kustom yang ada.

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

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

  3. Hapus centang pada Activate authorizer, lalu pilih Update.

    Anda tidak dapat menghapus otorisasi khusus saat sedang aktif.

  4. Dari halaman Detail otorisasi khusus, buka menu Tindakan, dan pilih Hapus.

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

    aws iot list-authorizers
  2. Atur otorisasi khusus inactive dengan menjalankan perintah ini setelah mengganti Custom_Auth_Name dengan otorisasi khusus untuk dihapus. authorizerName

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

    aws iot delete-authorizer --authorizer-name Custom_Auth_Name