快速入門:使用 Azure 入口網站 在事件方格命名空間上發佈及訂閱 MQTT 訊息

在本文中,您會使用 Azure 入口網站 來執行下列工作:

  1. 建立事件方格命名空間並啟用 MQTT 訊息代理程式
  2. 建立子資源,例如用戶端、用戶端群組和主題空間
  3. 授與用戶端發佈和訂閱主題空間的存取權
  4. 在客戶端之間發佈和接收訊息

必要條件

  • 如果您沒有 Azure 訂用帳戶,請建立 Azure 免費帳戶
  • 如果您不熟悉 Azure 事件方格,請先閱讀事件方格概觀,再開始本教學課程。
  • 請確定您的防火牆中已開啟埠 8883。 本教學課程中的範例會使用透過埠 8883 通訊的 MQTT 通訊協定。 某些公司和教育網路環境可能會封鎖此連接埠。
  • 您需要 X.509 用戶端憑證,才能產生指紋並驗證用戶端連線。

產生範例客戶端憑證和指紋

如果您還沒有憑證,您可以使用步驟 CLI 建立範例憑證。 請考慮手動安裝 Windows。

成功安裝步驟之後,您應該在使用者配置檔資料夾中開啟命令提示字元(Win+R 類型 %USERPROFILE%)。

  1. 若要建立跟證書和中繼憑證,請執行下列命令。 請記住密碼,這需要在下一個步驟中使用。

    step ca init --deployment-type standalone --name MqttAppSamplesCA --dns localhost --address 127.0.0.1:443 --provisioner MqttAppSamplesCAProvisioner
    
  2. 使用產生的 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
    
  3. 若要檢視指紋,請執行 Step 命令。

    step certificate fingerprint client1-authn-ID.pem
    
  4. 現在,為第二個用戶端建立憑證。

    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
    
  5. 若要檢視要搭配第二個用戶端使用的指紋,請執行 Step 命令。

    step certificate fingerprint client2-authn-ID.pem
    

建立命名空間

  1. 登入 Azure 入口網站

  2. 在搜尋列中,輸入事件方格命名空間,然後從下拉式清單中選取 [事件方格命名空間 ]。

    Screenshot of searching for Event Grid namespace on Azure portal.

  3. 在 [事件方格命名空間] 頁面上,選取 工具列上的 [+ 建立 ]。

  4. 在 [建立命名空間] 頁面上,遵循下列步驟:

    1. 選取 Azure 訂閱。

    2. 選取現有的資源群組,或選取 [新建],然後輸入資源群組的名稱。

    3. 提供命名空間的唯一名稱。 命名空間名稱每個區域必須是唯一的,因為它代表 DNS 專案。 請勿使用影像中顯示的名稱。 相反地,請建立您自己的名稱 - 它必須介於 3-50 個字元之間,且只包含 a-z、A-Z、0-9 和 -的值。

    4. 選取事件方格命名空間的位置。 目前,事件方格命名空間僅適用於選取的區域。

      Screenshot showing Event Grid namespace create flow basics tab.

  5. 選取頁面底部的 [檢閱 + 建立] 。

  6. 在 [建立命名空間] 頁面的 [檢閱 + 建立] 索引卷標上,選取 [建立]。

    注意

    為了讓快速入門保持簡單,您只會使用 [基本] 頁面來建立命名空間。 如需在精靈其他頁面上設定網路、安全性和其他設定的詳細步驟,請參閱 建立命名空間

  7. 部署成功之後,選取 [移至資源 ] 以流覽至命名空間的 [事件方格命名空間概觀] 頁面。

  8. 在 [概觀] 頁面中,您會看到 MQTT 訊息代理程序 處於 [已 停用] 狀態。 若要啟用 MQTT 訊息代理程式,請選取 [已停用 ] 連結,它會將您重新導向至 [設定] 頁面。

  9. 在 [ 組態 ] 頁面上,選取 [ 啟用 MQTT 訊息代理程式 ] 選項,然後選取 [ 套用 ] 以套用設定。

    Screenshot showing Event Grid namespace configuration page to enable MQTT.

建立用戶端

  1. 在左側功能表上,選取 [MQTT 訊息代理程式] 區段中的 [用戶端]。

  2. 在 [ 用戶端] 頁面上,選取 工具列上的 [+ 用戶端 ]。

    Screenshot of the Clients page with Add button selected.

  3. 在 [ 建立用戶端] 頁面上,輸入 用戶端的名稱 。 用戶端名稱在命名空間中必須是唯一的。

  4. 用戶端驗證名稱預設為客戶端名稱。 在本教學課程中,請將它變更為 client1-authn-ID。 您必須將此 Username 名稱包含在 CONNECT 封包中。

  5. 在本教學課程中,您會使用指紋型驗證。 在主要指紋中包含第一個用戶端憑證的指紋。

    Screenshot of client 1 configuration.

  6. 選取 工具列上的 [建立 ] 以建立另一個用戶端。

  7. 重複上述步驟,以建立名為 client2的第二個用戶端。 將驗證名稱變更為 client2-authn-ID ,並在主要指紋中包含第二個客戶端憑證的指紋。

    Screenshot of client 2 configuration.

    注意

    • 若要讓快速入門保持簡單,您將使用指紋比對進行驗證。 如需使用 X.509 CA 憑證鏈結進行客戶端驗證的詳細步驟,請參閱 使用憑證鏈結進行客戶端驗證。
    • 此外,我們會使用預設 $all 用戶端群組,其中包含此練習命名空間中的所有用戶端。 若要深入瞭解如何使用用戶端屬性建立自定義用戶端群組,請參閱用戶端群組。

建立主題空間

  1. 在左側功能表上,選取 [MQTT 訊息代理程式] 區段中的 [主題空間]。

  2. 在 [ 主題空間 ] 頁面上,選取 工具列上的 [+ 主題空間 ]。

    Screenshot of Topic spaces page with create button selected.

  3. 在 [建立主題空間] 頁面上,提供主題空間的名稱

  4. 選取 [+ 新增主題範本]。

    Screenshot of Create topic space with the name.

  5. 輸入 contosotopics/topic1 主題範本,然後選取 [建立 ] 以建立主題空間。

    Screenshot of topic space configuration.

使用許可權系結設定訪問控制

  1. 在左側功能表上,選取 [MQTT 訊息代理程式] 區段中的許可權系結

  2. 在 [許可權系結] 頁面上,選取 工具欄上的 [+ 許可權系結 ]。

    Screenshot that shows the Permission bindings page with the Create button selected.

  3. 設定權限系結,如下所示:

    1. 提供許可權系結的名稱。 例如: contosopublisherbinding

    2. 針對 用戶端組名,選取 [$all]。

    3. 針對 [ 主題空間名稱],選取您在上一個步驟中建立的主題空間。

    4. 主題空間上的發行者 許可權授與用戶端群組。

      Screenshot showing creation of first permission binding.

  4. 選取 [建立] 以建立許可權系結。

  5. 選取工具列上的 [+ 權限系結],以建立一個以上的許可權系結contososubscriberbinding

  6. 提供名稱,並提供 $all 用戶端群組 訂閱者 存取 ContosoTopicSpace ,如下所示。

    Screenshot showing creation of second permission binding.

  7. 選取 [建立] 以建立許可權系結。

使用 MQTTX 應用程式將用戶端 連線 至 EG 命名空間

  1. 針對發佈/訂閱 MQTT 訊息,您可以使用任何您最愛的工具。 為了示範目的,發佈/訂閱是使用 MQTTX 應用程式來顯示,您可以從 下載 https://mqttx.app/

    Screenshot showing MQTTX app left rail to add new client.

  2. 使用 設定 client1

    • 名稱client1 (此值可以是任何專案)

    • 用戶端識別碼client1-session1 (CONNECT 封包中的用戶端識別碼用來識別用戶端連線的作業階段識別碼)

    • 使用者名稱client1-authn-ID。 此值必須符合您在 Azure 入口網站 中建立用戶端時所指定的客戶端驗證名稱

      重要

      使用者名稱必須符合用戶端元數據中的用戶端驗證名稱。

  3. 從命名空間的 [概觀] 頁面,將主機名更新為 MQTT 主機名。

    Screenshot showing Event Grid namespace overview page, which has MQTT hostname.

  4. 埠更新為8883

  5. 將 SSL/TLS 切換至 ON。

  6. 將 [SSL 安全] 切換為 [開啟],以確保服務憑證驗證。

  7. 選取 [憑證] 作為 [自我簽署]。

  8. 提供客戶端憑證檔案的路徑。

  9. 提供用戶端金鑰檔案的路徑。

  10. 其餘的設定可以保留預先定義的預設值。

    Screenshot showing client 1 configuration part 1 on MQTTX app.

  11. 選取 [連線],將用戶端連線到 MQTT 訊息代理程式。

  12. 重複上述步驟以連接第二個用戶端 client2,並顯示對應的驗證資訊。

    Screenshot showing client 2 configuration part 1 on MQTTX app.

    Screenshot showing client 2 configuration part 2 on MQTTX app.

使用 MQTTX 應用程式發佈/訂閱

  1. 連接客戶端之後,針對 client2,選取 [ + 新增訂閱] 按鈕。

  2. 新增 contosotopics/topic1 為主題,然後選取 [ 確認]。 您可以將其他欄位保留現有的預設值。

    Screenshot showing subscription topic configuration on MQTTX app.

  3. 選取 左側滑軌中的 client1

  4. 針對 client1,在訊息撰寫方塊的頂端,輸入 contosotopics/topic1 作為要發佈的主題。

  5. 撰寫訊息。 您可以使用任何格式或 JSON,如下所示。

  6. 選取 [Send] \(傳送\) 按鈕。

    Screenshot showing message publishing on the topic in MQTTX app.

  7. 訊息應該會顯示為在用戶端 1 中發佈。

    Screenshot showing message published on the topic in MQTTX app.

  8. 切換至 client2。 確認 client2 已收到訊息。

    Screenshot showing the message received by the subscribing client on MQTTX app.

下一步