選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

AWS IoT Core 使用自訂身分驗證連線至

焦點模式
AWS IoT Core 使用自訂身分驗證連線至 - AWS IoT Core

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

裝置可以透過 AWS IoT Core 使用自訂身分驗證搭配 AWS IoT Core 支援裝置傳訊的任何通訊協定來連線至 。如需受支援通訊協定的詳細資訊,請參閱 裝置通訊協定。  傳遞至授權方 Lambda 函數的連線資料取決於您使用的通訊協定。如需建立授權方 Lambda 函數的詳細資訊,請參閱 定義您的 Lambda 函數。以下各節說明如何使用每個支援的通訊協定來連線,以便進行身分驗證。

HTTPS

AWS IoT Core 使用 HTTP Publish API 將資料傳送到 的裝置,可以透過請求標頭或 HTTP POST 請求中的查詢參數來傳遞憑證。裝置可以指定要使用 x-amz-customauthorizer-name 標頭或查詢參數叫用的授權方。如果您已在授權方中啟用字符簽署,則必須在請求標頭或查詢參數中傳遞 token-key-namex-amz-customauthorizer-signature。請注意,在瀏覽器中使用 JavaScript 時,token-signature 的值必須是 URL 編碼格式。

注意

HTTPS 通訊協定的客戶授權方僅支援發佈操作。如需有關 HTTP 通訊協定的詳細資訊,請參閱 裝置通訊協定

下列範例請求會顯示如何在請求標頭和查詢參數中傳遞這些參數。

//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

AWS IoT Core 使用 MQTT 連線連線至 的裝置可以透過 MQTT 訊息的 usernamepassword 欄位傳遞憑證。此 username 值也可以選擇包含一個查詢字串,將其他值 (包括字符、簽章和授權方名稱) 傳遞給您的授權方。如果您想要使用字符型身分驗證結構描述,而不是 usernamepassword 值,則可使用此查詢字串。 

注意

密碼欄位中的資料由 base64 編碼 AWS IoT Core。您的 Lambda 函數必須將其解碼。

以下範例包含一個 username 字串,其中包含指定字符和簽章的額外參數。 

username?x-amz-customauthorizer-name=authorizer-name&x-amz-customauthorizer-signature=token-signature&token-key-name=token-value

若要叫用授權方, AWS IoT Core 使用 MQTT 和自訂身分驗證連線至 的裝置必須在連接埠 443 上連線。他們還必須傳遞值為 的應用程式層通訊協定交涉 (ALPN) TLS 延伸mqtt,以及具有其 AWS IoT Core 資料端點主機名稱的伺服器名稱指示 (SNI) 延伸。為了避免潛在的錯誤,x-amz-customauthorizer-signature 的值必須進行 URL 編碼。我們也強烈建議您對 x-amz-customauthorizer-nametoken-key-name 值進行 URL 編碼。如需這些值的詳細資訊,請參閱 裝置通訊協定。V2 AWS IoT 裝置 SDK、行動 SDK 和 AWS IoT 裝置用戶端 可以設定這些延伸模組。 

MQTT over WebSockets

AWS IoT Core 透過 WebSockets 使用 MQTT 連線至 的裝置,可以透過下列兩種方式之一傳遞登入資料。

  • 透過 HTTP UPGRADE 請求中的請求標頭或查詢參數來建立 WebSockets 連線。

  • 透過 MQTT CONNECT 訊息中的 usernamepassword 欄位。

如果透過 MQTT CONNECT 訊息傳遞憑證,則需要 ALPN 和 SNI TLS 延伸。如需這些延伸的詳細資訊,請參閱 MQTT。下列範例顯示如何透過 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

簽署字符

您必須利用您在 create-authorizer 呼叫中所使用之公有/私有金鑰對中的私有金鑰簽署字符。下列範例顯示如何使用類似 UNIX 的命令和 JavaScript 來建立字符簽章。它們會使用 SHA-256 雜湊演算法來編碼簽章。

Command line
echo -n TOKEN_VALUE | openssl dgst -sha256 -sign PEM encoded RSA private key | openssl base64
JavaScript
const crypto = require('crypto') const key = "PEM encoded RSA private key" const k = crypto.createPrivateKey(key) let sign = crypto.createSign('SHA256') sign.write(t) sign.end() const s = sign.sign(k, 'base64')
echo -n TOKEN_VALUE | openssl dgst -sha256 -sign PEM encoded RSA private key | openssl base64
隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。