Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Perangkat dapat terhubung AWS IoT Core dengan menggunakan otentikasi khusus dengan protokol apa pun yang AWS IoT Core mendukung pesan perangkat. Untuk informasi selengkapnya tentang protokol komunikasi yang didukung, lihat. Protokol komunikasi perangkat Data koneksi yang Anda berikan ke fungsi Lambda otorisasi Anda tergantung pada protokol yang Anda gunakan. Untuk informasi selengkapnya tentang membuat fungsi Lambda otorisasi Anda, lihat. Mendefinisikan fungsi Lambda Anda Bagian berikut menjelaskan cara menghubungkan ke otentikasi dengan menggunakan setiap protokol yang didukung.
HTTPS
Perangkat yang mengirim data AWS IoT Core dengan menggunakan HTTP Publish API dapat meneruskan kredensyal baik melalui header permintaan atau parameter kueri dalam permintaan HTTP POST mereka. Perangkat dapat menentukan otorisasi untuk dipanggil dengan menggunakan x-amz-customauthorizer-name
header atau parameter kueri. Jika Anda mengaktifkan penandatanganan token di otorisasi, Anda harus meneruskan
dan token-key-name
x-amz-customauthorizer-signature
dalam header permintaan atau parameter kueri. Perhatikan bahwa
nilainya harus dikodekan URL saat menggunakan JavaScript dari dalam browser.token-signature
catatan
Otorisasi pelanggan untuk protokol HTTPS hanya mendukung operasi publikasi. Untuk informasi selengkapnya tentang protokol HTTPS, lihatProtokol komunikasi perangkat.
Contoh permintaan berikut menunjukkan bagaimana Anda meneruskan parameter ini di header permintaan dan parameter kueri.
//Passing credentials via headers POST /topics/topic?qos=qos HTTP/1.1 Host: your-endpoint x-amz-customauthorizer-signature:
token-signature
token-key-name
:token-value
x-amz-customauthorizer-name:authorizer-name
//Passing credentials via query parameters POST /topics/topic?qos=qos&x-amz-customauthorizer-signature=token-signature
&token-key-name
=token-value
HTTP/1.1
MQTT
Perangkat yang terhubung AWS IoT Core dengan menggunakan koneksi MQTT dapat meneruskan kredensyal melalui username
dan password
bidang pesan MQTT. username
Nilai juga dapat secara opsional berisi string kueri yang meneruskan nilai tambahan (termasuk token, tanda tangan, dan nama otorisasi) ke otorisasi Anda. Anda dapat menggunakan string kueri ini jika Anda ingin menggunakan skema otentikasi berbasis token, bukan dan nilai. username
password
catatan
Data di bidang kata sandi dikodekan oleh base64. AWS IoT Core Fungsi Lambda Anda harus memecahkan kode itu.
Contoh berikut berisi username
string yang berisi parameter tambahan yang menentukan token dan tanda tangan.
username?x-amz-customauthorizer-name=
authorizer-name
&x-amz-customauthorizer-signature=token-signature
&token-key-name
=token-value
Untuk memanggil otorisasi, perangkat yang terhubung AWS IoT Core dengan menggunakan MQTT dan otentikasi khusus harus terhubung pada port 443. Mereka juga harus melewati ekstensi Application Layer Protocol Negotiation (ALPN) TLS dengan nilai mqtt
dan ekstensi Server Name Indication (SNI) dengan nama host dari endpoint data mereka. AWS IoT Core Untuk menghindari potensi kesalahan, nilai untuk x-amz-customauthorizer-signature
harus dikodekan URL. Kami juga sangat merekomendasikan bahwa nilai-nilai x-amz-customauthorizer-name
dan URL token-key-name
dikodekan. Untuk informasi selengkapnya tentang nilai-nilai ini, lihatProtokol komunikasi perangkat. V2 AWS IoT SDK Perangkat, SDK Seluler, dan AWS IoT Klien Perangkat dapat mengkonfigurasi kedua ekstensi ini.
MQTT lebih WebSockets
Perangkat yang terhubung AWS IoT Core dengan menggunakan MQTT over WebSockets dapat meneruskan kredensyal dengan salah satu dari dua cara berikut.
-
Melalui header permintaan atau parameter kueri dalam permintaan HTTP UPGRADE untuk membuat WebSockets koneksi.
-
Melalui
username
danpassword
bidang dalam pesan MQTT CONNECT.
Jika Anda meneruskan kredensyal melalui pesan koneksi MQTT, ekstensi ALPN dan SNI TLS diperlukan. Untuk informasi selengkapnya tentang ekstensi ini, lihatMQTT. Contoh berikut menunjukkan bagaimana untuk meneruskan kredensyal melalui permintaan HTTP Upgrade.
GET /mqtt HTTP/1.1 Host: your-endpoint Upgrade: WebSocket Connection: Upgrade x-amz-customauthorizer-signature:
token-signature
token-key-name
:token-value
sec-WebSocket-Key:any random base64 value
sec-websocket-protocol: mqtt sec-WebSocket-Version:websocket version
Menandatangani token
Anda harus menandatangani token dengan kunci pribadi dari public-private key pair yang Anda gunakan dalam panggilan. create-authorizer
Contoh berikut menunjukkan cara membuat tanda tangan token dengan menggunakan perintah Unix-like dan. JavaScript Mereka menggunakan algoritma hash SHA-256 untuk menyandikan tanda tangan.
echo -n
TOKEN_VALUE
| openssl dgst -sha256 -signPEM encoded RSA private key
| openssl base64