快速入門:使用 Azure 入口網站 在事件方格命名空間上發佈及訂閱 MQTT 訊息
在本文中,您會使用 Azure 入口網站 來執行下列工作:
- 建立事件方格命名空間並啟用 MQTT 訊息代理程式
- 建立子資源,例如用戶端、用戶端群組和主題空間
- 授與用戶端發佈和訂閱主題空間的存取權
- 在客戶端之間發佈和接收訊息
必要條件
- 如果您沒有 Azure 訂用帳戶,請建立 Azure 免費帳戶 。
- 如果您不熟悉 Azure 事件方格,請先閱讀事件方格概觀,再開始本教學課程。
- 請確定您的防火牆中已開啟埠 8883。 本教學課程中的範例會使用透過埠 8883 通訊的 MQTT 通訊協定。 某些公司和教育網路環境可能會封鎖此連接埠。
- 您需要 X.509 用戶端憑證,才能產生指紋並驗證用戶端連線。
產生範例客戶端憑證和指紋
如果您還沒有憑證,您可以使用步驟 CLI 建立範例憑證。 請考慮手動安裝 Windows。
成功安裝步驟之後,您應該在使用者配置檔資料夾中開啟命令提示字元(Win+R 類型 %USERPROFILE%)。
若要建立跟證書和中繼憑證,請執行下列命令。 請記住密碼,這需要在下一個步驟中使用。
step ca init --deployment-type standalone --name MqttAppSamplesCA --dns localhost --address 127.0.0.1:443 --provisioner MqttAppSamplesCAProvisioner
使用產生的 CA 檔案,為第一個用戶端建立憑證。 請確定在命令中使用憑證和秘密檔案的正確路徑。
step certificate create client1-authn-ID client1-authn-ID.pem client1-authn-ID.key --ca .step/certs/intermediate_ca.crt --ca-key .step/secrets/intermediate_ca_key --no-password --insecure --not-after 2400h
若要檢視指紋,請執行 Step 命令。
step certificate fingerprint client1-authn-ID.pem
現在,為第二個用戶端建立憑證。
step certificate create client2-authn-ID client2-authn-ID.pem client2-authn-ID.key --ca .step/certs/intermediate_ca.crt --ca-key .step/secrets/intermediate_ca_key --no-password --insecure --not-after 2400h
若要檢視要搭配第二個用戶端使用的指紋,請執行 Step 命令。
step certificate fingerprint client2-authn-ID.pem
建立命名空間
登入 Azure 入口網站。
在搜尋列中,輸入事件方格命名空間,然後從下拉式清單中選取 [事件方格命名空間 ]。
在 [事件方格命名空間] 頁面上,選取 工具列上的 [+ 建立 ]。
在 [建立命名空間] 頁面上,遵循下列步驟:
選取 Azure 訂閱。
選取現有的資源群組,或選取 [新建],然後輸入資源群組的名稱。
提供命名空間的唯一名稱。 命名空間名稱每個區域必須是唯一的,因為它代表 DNS 專案。 請勿使用影像中顯示的名稱。 相反地,請建立您自己的名稱 - 它必須介於 3-50 個字元之間,且只包含 a-z、A-Z、0-9 和
-
的值。選取事件方格命名空間的位置。 目前,事件方格命名空間僅適用於選取的區域。
選取頁面底部的 [檢閱 + 建立] 。
在 [建立命名空間] 頁面的 [檢閱 + 建立] 索引卷標上,選取 [建立]。
注意
為了讓快速入門保持簡單,您只會使用 [基本] 頁面來建立命名空間。 如需在精靈其他頁面上設定網路、安全性和其他設定的詳細步驟,請參閱 建立命名空間。
部署成功之後,選取 [移至資源 ] 以流覽至命名空間的 [事件方格命名空間概觀] 頁面。
在 [概觀] 頁面中,您會看到 MQTT 訊息代理程序 處於 [已 停用] 狀態。 若要啟用 MQTT 訊息代理程式,請選取 [已停用 ] 連結,它會將您重新導向至 [設定] 頁面。
在 [ 組態 ] 頁面上,選取 [ 啟用 MQTT 訊息代理程式 ] 選項,然後選取 [ 套用 ] 以套用設定。
建立用戶端
在左側功能表上,選取 [MQTT 訊息代理程式] 區段中的 [用戶端]。
在 [ 用戶端] 頁面上,選取 工具列上的 [+ 用戶端 ]。
在 [ 建立用戶端] 頁面上,輸入 用戶端的名稱 。 用戶端名稱在命名空間中必須是唯一的。
用戶端驗證名稱預設為客戶端名稱。 在本教學課程中,請將它變更為
client1-authn-ID
。 您必須將此Username
名稱包含在 CONNECT 封包中。在本教學課程中,您會使用指紋型驗證。 在主要指紋中包含第一個用戶端憑證的指紋。
選取 工具列上的 [建立 ] 以建立另一個用戶端。
重複上述步驟,以建立名為
client2
的第二個用戶端。 將驗證名稱變更為client2-authn-ID
,並在主要指紋中包含第二個客戶端憑證的指紋。注意
- 若要讓快速入門保持簡單,您將使用指紋比對進行驗證。 如需使用 X.509 CA 憑證鏈結進行客戶端驗證的詳細步驟,請參閱 使用憑證鏈結進行客戶端驗證。
- 此外,我們會使用預設
$all
用戶端群組,其中包含此練習命名空間中的所有用戶端。 若要深入瞭解如何使用用戶端屬性建立自定義用戶端群組,請參閱用戶端群組。
建立主題空間
在左側功能表上,選取 [MQTT 訊息代理程式] 區段中的 [主題空間]。
在 [ 主題空間 ] 頁面上,選取 工具列上的 [+ 主題空間 ]。
在 [建立主題空間] 頁面上,提供主題空間的名稱。
選取 [+ 新增主題範本]。
輸入
contosotopics/topic1
主題範本,然後選取 [建立 ] 以建立主題空間。
使用許可權系結設定訪問控制
在左側功能表上,選取 [MQTT 訊息代理程式] 區段中的許可權系結。
在 [許可權系結] 頁面上,選取 工具欄上的 [+ 許可權系結 ]。
設定權限系結,如下所示:
提供許可權系結的名稱。 例如:
contosopublisherbinding
。針對 用戶端組名,選取 [$all]。
針對 [ 主題空間名稱],選取您在上一個步驟中建立的主題空間。
將 主題空間上的發行者 許可權授與用戶端群組。
選取 [建立] 以建立許可權系結。
選取工具列上的 [+ 權限系結],以建立一個以上的許可權系結 。
contososubscriberbinding
。提供名稱,並提供 $all 用戶端群組 訂閱者 存取 ContosoTopicSpace ,如下所示。
選取 [建立] 以建立許可權系結。
使用 MQTTX 應用程式將用戶端 連線 至 EG 命名空間
針對發佈/訂閱 MQTT 訊息,您可以使用任何您最愛的工具。 為了示範目的,發佈/訂閱是使用 MQTTX 應用程式來顯示,您可以從 下載 https://mqttx.app/。
使用 設定 client1
名稱 為
client1
(此值可以是任何專案)用戶端識別碼 為
client1-session1
(CONNECT 封包中的用戶端識別碼用來識別用戶端連線的作業階段識別碼)使用者名稱 為
client1-authn-ID
。 此值必須符合您在 Azure 入口網站 中建立用戶端時所指定的客戶端驗證名稱值。重要
使用者名稱必須符合用戶端元數據中的用戶端驗證名稱。
從命名空間的 [概觀] 頁面,將主機名更新為 MQTT 主機名。
將埠更新為8883。
將 SSL/TLS 切換至 ON。
將 [SSL 安全] 切換為 [開啟],以確保服務憑證驗證。
選取 [憑證] 作為 [自我簽署]。
提供客戶端憑證檔案的路徑。
提供用戶端金鑰檔案的路徑。
其餘的設定可以保留預先定義的預設值。
選取 [連線],將用戶端連線到 MQTT 訊息代理程式。
重複上述步驟以連接第二個用戶端 client2,並顯示對應的驗證資訊。
使用 MQTTX 應用程式發佈/訂閱
連接客戶端之後,針對 client2,選取 [ + 新增訂閱] 按鈕。
新增
contosotopics/topic1
為主題,然後選取 [ 確認]。 您可以將其他欄位保留現有的預設值。選取 左側滑軌中的 client1 。
針對 client1,在訊息撰寫方塊的頂端,輸入
contosotopics/topic1
作為要發佈的主題。撰寫訊息。 您可以使用任何格式或 JSON,如下所示。
選取 [Send] \(傳送\) 按鈕。
訊息應該會顯示為在用戶端 1 中發佈。
切換至 client2。 確認 client2 已收到訊息。