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 Publish. HTTP 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 ke AWS IoT Core dengan menggunakan HTTP Publish API to a test MQTT topic. 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 MQTT topik 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 AWS IoT konsol Akun AWS dan Anda untuk menyelesaikan tutorial ini.

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

    penting

    IAMKebijakan 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 IAM kebijakan 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.

  • Buka SSL alat

    Contoh dalam tutorial ini menggunakan Libre SSL 2.6.5. Anda juga dapat menggunakan alat Open SSL 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 IAM kebijakan dengan Deny tindakan.

  • Jika permintaan berasal dari Postman menggunakan HTTP dan actionToken parameter memiliki nilaiallow, ia mengembalikan IAM kebijakan dengan Allow tindakan. Jika tidak, ia mengembalikan IAM kebijakan 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 kredensi bagi AWS SDK dan untuk 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 Open SSL tools 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, 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 sumber otorisasi kustom dengan menggunakan AWS IoT konsol, file AWS CLI, atau file. 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 khusus 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 Amazon Resource Name (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 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 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 CLI perintah add-permission.

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 MQTT pesan penerbitan 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 HTTP POST permintaan 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 POST permintaan untuk menguji otorisasi kustom Anda.

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

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

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

      Perhatikan bahwa ini URL termasuk parameter actionToken=allow kueri yang akan memberi tahu fungsi Lambda Anda untuk mengembalikan dokumen kebijakan yang memungkinkan akses ke. AWS IoT Setelah Anda memasukkanURL, 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 diperiksa. Ganti Host nilai dengan nilai 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.

        Kunci 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 JSON pesan 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 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 MQTT pengujian

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 MQTT pengujian 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 MQTT uji.

  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.

    Biarkan jendela ini terlihat untuk langkah berikutnya.

  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 MQTT pengujian, 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 MQTT pengujian, 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 Tukang PosURL.

    • Pastikan Anda menggunakan titik akhir yang sesuai untuk otorisasi khusus. 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 MQTT pengujian. Filter topik peka huruf besar/kecil. Jika ragu, Anda juga dapat berlangganan # topik, yang berlangganan semua MQTT pesan yang melewati broker pesan Akun AWS dan Wilayah AWS digunakan untuk membuka AWS IoT konsol.

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 MQTT topik dengan menggunakan Postman dan memvalidasi permintaan dengan otorisasi khusus Anda

  • Anda menggunakan klien MQTT pengujian untuk melihat pesan yang dikirim dari tes Tukang Pos 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 harus mendapatkan respons kesalahan, seperti ini, dan pesan tidak akan muncul di klien MQTT pengujian.

    { "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