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.
Dalam tutorial ini, Anda akan:
- Langkah 1: Buat fungsi Lambda untuk otorisasi kustom Anda
- Langkah 2: Buat key pair publik dan pribadi untuk otorisasi kustom Anda
- Langkah 3: Buat sumber otorisasi khusus dan otorisasi
- Langkah 4: Uji otorisasi dengan menelepon test-invoke-authorizer
- Langkah 5: Uji penerbitan pesan MQTT menggunakan Postman
- Langkah 6: Lihat pesan di klien pengujian MQTT
- Langkah 7: Tinjau hasil dan langkah selanjutnya
- Langkah 8: Membersihkan
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 denganDeny
tindakan.
Untuk membuat fungsi Lambda untuk otorisasi kustom Anda
-
Pilih Buat fungsi.
-
Konfirmasi Penulis dari awal dipilih.
-
Di bawah Informasi dasar:
-
Dalam nama Fungsi, masukkan
custom-auth-function
. -
Di Runtime, konfirmasikan Node.js 18.x
-
-
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.
-
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.
-
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; }
-
Pilih Deploy.
-
Setelah Perubahan diterapkan muncul di atas editor:
-
Gulir ke bagian Ikhtisar fungsi di atas editor.
-
Salin Fungsi ARN dan simpan untuk digunakan nanti dalam tutorial ini.
-
-
Uji fungsi Anda.
-
Pilih tab Uji.
-
Menggunakan pengaturan pengujian default, pilih Invoke.
-
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
-
Buat file kunci pribadi.
openssl genrsa -out private-key.pem 4096
-
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.
-
Buat file kunci publik.
openssl rsa -in private-key.pem -pubout -out public-key.pem
-
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)
-
Buka halaman Custom Authorizer AWS IoT konsol
, dan pilih Create Authorizer. -
Di Create Authorizer:
-
Dalam nama Authorizer, masukkan
my-new-authorizer
. -
Dalam status Authorizer, periksa Aktif.
-
Dalam fungsi Authorizer, pilih fungsi Lambda yang Anda buat sebelumnya.
-
Dalam validasi Token - opsional:
-
Beralih pada validasi Token.
-
Dalam nama kunci Token, masukkan
tokenKeyName
. -
Pilih Tambah kunci.
-
Dalam Nama kunci, masukkan
FirstKey
. -
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-----
-
-
-
Pilih Buat Authorizer.
-
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
-
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:
" \ --token-signing-public-keys FirstKey="Region
:57EXAMPLE833:function:custom-auth-function-----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-arn
Nilainya adalah Nama Sumber Daya Amazon (ARN) dari fungsi Lambda yang Anda buat untuk otorisasi khusus Anda. -
token-signing-public-keys
Nilai termasuk nama kunci,FirstKey
, dan isipublic-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.
-
-
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
-
Setelah memasukkan nilai Anda, masukkan perintah berikut. Perhatikan bahwa
statement-id
nilainya harus unik. Ganti
dengan nilai lain jika Anda telah menjalankan tutorial ini sebelumnya atau jika Anda mendapatkanId-1234
ResourceConflictException
kesalahan.aws lambda add-permission \ --function-name "custom-auth-function" \ --principal "iot.amazonaws.com" \ --action "lambda:InvokeFunction" \ --statement-id "
Id-1234
" \ --source-arnauthorizerArn
-
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
-
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.
-
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
-
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. -
Buka jendela Postman baru dan buat permintaan HTTP POST baru.
-
Dari komputer Anda, buka aplikasi Postman.
-
Di Postman, di menu File, pilih New... .
-
Di kotak dialog Baru, pilih Permintaan.
-
Dalam permintaan Simpan,
-
Dalam nama Permintaan masukkan
Custom authorizer test request
. -
Di Pilih koleksi atau folder untuk disimpan: pilih atau buat koleksi untuk menyimpan permintaan ini.
-
Pilih Simpan ke
collection_name
.
-
-
-
Buat permintaan POST untuk menguji otorisasi kustom Anda.
-
Dalam pemilih metode permintaan di sebelah bidang URL, pilih POST.
-
https://
device_data_endpoint_address
:443/topics/test/cust-auth/topic?qos=0&actionToken=allowPerhatikan 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. -
Di tab Auth, di bidang Type, pilih No Auth.
-
Di tab Header:
-
Jika ada kunci Host yang dicentang, hapus centang yang satu ini.
-
Di bagian bawah daftar header tambahkan header baru ini dan konfirmasikan bahwa mereka dicentang. Ganti
Host
nilai dengandevice_data_endpoint_address
Anda danx-amz-customauthorizer-signature
nilainya dengan string tanda tangan yang Anda gunakan dengan perintah di bagian sebelumnya. test-invoke-authorizeKunci 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
-
-
Di tab Tubuh:
-
Di kotak opsi format data, pilih Raw.
-
Dalam daftar tipe data, pilih JavaScript.
-
Di bidang teks, masukkan payload pesan JSON ini untuk pesan pengujian Anda:
{ "data_mode": "test", "vibration": 200, "temperature": 40 }
-
-
-
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
-
Di AWS IoT konsol, buka klien uji MQTT
. -
Di tab Berlangganan topik, di Filter topik, masukkan
test/cust-auth/topic
, yang merupakan topik pesan yang digunakan dalam contoh Tukang Pos dari bagian sebelumnya. -
Pilih Langganan.
Jaga agar jendela ini terlihat untuk langkah selanjutnya.
-
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.
-
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)
-
Buka halaman otorisasi khusus AWS IoT konsol
, dan dalam daftar otorisasi khusus, temukan otorisasi khusus untuk dihapus. -
Buka halaman detail otorisasi kustom dan, dari menu Tindakan, pilih Edit.
-
Hapus centang pada Activate authorizer, lalu pilih Update.
Anda tidak dapat menghapus otorisasi khusus saat sedang aktif.
-
Dari halaman Detail otorisasi khusus, buka menu Tindakan, dan pilih Hapus.
Untuk menghapus otorisasi kustom ()AWS CLI
-
Buat daftar otorisasi khusus yang telah Anda instal dan temukan nama otorisasi khusus yang ingin Anda hapus.
aws iot list-authorizers
-
Atur otorisasi khusus
inactive
dengan menjalankan perintah ini setelah mengganti
dengan otorisasi khusus untuk dihapus.Custom_Auth_Name
authorizerName
aws iot update-authorizer --status INACTIVE --authorizer-name
Custom_Auth_Name
-
Hapus otorisasi khusus dengan menjalankan perintah ini setelah mengganti
dengan otorisasi khusus untuk dihapus.Custom_Auth_Name
authorizerName
aws iot delete-authorizer --authorizer-name
Custom_Auth_Name