MQTT 用戶端

在本文中,您將了解如何設定 MQTT 用戶端和用戶端群組。

用戶端

用戶端可以是裝置或應用程式,例如傳送/接收 MQTT 訊息的裝置或車輛。

例如,假設車隊管理公司擁有數百輛卡車和其他貨運車輛。 您可以藉由從雲端服務來回傳送和接收 MQTT 訊息,改善其路由、追蹤、驅動程式安全性和可預測的維護功能。

在此案例中,車輛可以設定為客戶,以發佈/訂閱各種主題,例如天氣資訊、道路狀況、地理位置、引擎性能和其他車輛磨損層面。 此外,在將車輛設定為用戶端時,還可以在用戶端中繼資料中包含一組屬性,例如車輛類型、出廠年份、品牌和車款、最大負載容量等。

注意

  • 用戶端名稱長度可以介於 1-128 個字元。
  • 用戶端名稱可以包含英數字元、連字號 (-)、冒號 (:)、點 (.) 和底線 (_),沒有空格。 它會區分大小寫,而且每個命名空間必須是唯一的。

用戶端中繼資料的主要詞彙

客戶端驗證名稱:您可以為沒有 Azure Resource Manager 命名條件約束的用戶端提供唯一識別碼。 這是強制欄位,如果未明確提供,則會預設為 [用戶端名稱]。

在命名空間中,任兩個用戶端都不能具有相同的驗證名稱。 驗證用戶端時,我們會將用戶端驗證名稱視為不區分大小寫。

我們會保留您在用戶端中設定之用戶端驗證名稱的原始大小寫。 我們會在路由擴充、主題空間比對等方面使用建立用戶端時所提供的原始用戶端驗證名稱 (區分大小寫)。

注意

  • 用戶端驗證名稱可以是 1-128 個字元長、UTf-8 字串,沒有限制
  • 用戶端驗證名稱區分大小寫,而且每個命名空間必須是唯一的 (判斷唯一性時會忽略大小寫)

用戶端憑證驗證配置: 若要使用 CA 憑證進行驗證,您可以選擇下列其中一個選項來指定用戶端憑證中用戶端身分識別的位置。 當用戶端嘗試連線到服務時,服務會從此憑證欄位尋找用戶端身分識別,並將它與用戶端驗證名稱進行比對,以驗證用戶端。

我們支援五個憑證欄位:

  • 主體比對驗證名稱
  • DNS 比對驗證名稱
  • Uri 比對驗證名稱
  • IP 比對驗證名稱
  • 電子郵件比對驗證名稱

使用自我簽署憑證來驗證用戶端時,請使用 [指紋比對] 選項。

注意

  • clientCertificateAuthentication 一律需要有效的 validationScheme 值。
  • authenticationName 並非必要,但在第一次提出建立要求之後,authenticationName 值會預設為 ARM 名稱,然後無法更新。
  • authenticationName 無法更新。
  • 如果 validationScheme 不是 ThumbprintMatch,則無法提供 allowedThumbprints 清單。
  • allowedThumbprints 清單只能提供,而且如果 validationScheme 是 ThumbprintMatch 且至少具有一個指紋,則必須提供。
  • allowedThumbprints 只能保存最多 2 個指紋。
  • 允許的 validationScheme 值為 SubjectMatchesAuthenticationName、DnsMatchesAuthenticationName、UriMatchesAuthenticationName、IpMatchesAuthenticationName、EmailMatchesAuthenticationName、ThumbprintMatch
  • 使用指紋,並允許跨多個用戶端重複使用相同的憑證。 針對其他類型的驗證,驗證名稱必須位於用戶端憑證的所選欄位中。

用戶端屬性

用戶端屬性是一組使用者定義的機碼值組或標記,可提供用戶端的相關資訊。

這些用戶端屬性可用來建立用戶端群組。 例如,您可以將所有半掛式卡車類型的車輛分成一個群組,將所有皮卡類型的車輛分成另一個群組。

這些屬性會用於用戶端群組查詢中,以篩選一組用戶端。 屬性可以描述用戶端的實體或功能特性。 一般屬性可以是用戶端的「類型」。

以下是範例:

  • 類型:值可以是「感應器」或「控溫器」或「車輛」

以下是具有屬性定義的用戶端結構描述範例:

{  
    "id": "device123",  
    "attributes": {  
        "type": "home-sensors",
        "sensors": ["motion", "noise", "light"]
     }
}

設定用戶端屬性時,請考慮用戶端發佈 (訂閱) 的主題。 從主題到用戶端的逆向思考有助於更輕鬆地識別用戶端角色之間的共通性以及定義用戶端屬性,讓用戶端群組更簡單。

注意

  • 用戶端屬性索引碼在用戶端中必須是唯一的。 索引碼無法重複。
  • 用戶端屬性值可以是 stringintegerarray of strings 類型。
  • 用戶端屬性的總大小必須一律小於 4KB。
  • 用戶端屬性名稱 (索引碼) 只能包含英數字元和底線 (_)。

範例合約

憑證鏈結型用戶端驗證的範例

{
    "properties": {
        "authenticationName": "127.0.0.1",
        "state": "Enabled",
        "clientCertificateAuthentication": {
            "validationScheme": "IpMatchesAuthenticationName"
        },
        "attributes": {
            "room": "345",
            "floor": 3,
            "bldg": "17"
        },
        "description": "Description of the client"
    }
}

自我簽署憑證指紋型用戶端驗證的範例

{
    "properties": {
        "authenticationName": "abcd@domain.com-1",
        "state": "Enabled",
        "clientCertificateAuthentication": {
            "validationScheme": "ThumbprintMatch",
            "allowedThumbprints": ["primary", "secondary"]
        },
        "attributes": {
            "room": "345",
            "floor": "3",
            "bldg": 17
        },
        "description": "Description of the client"
    }
}

Azure 入口網站設定

使用下列步驟建立用戶端:

  1. 在 Azure 入口網站中,移至您的命名空間

  2. 在 [用戶端] 下,選取 [+ 用戶端]

    Screenshot of adding a client.

  3. 選擇 [用戶端憑證驗證配置]。 如需用戶端驗證的詳細資訊,請參閱用戶端驗證文章 (部分機器翻譯)。

  • 新增用戶端屬性。

    Screenshot of client configuration.

  1. 選取 [建立]

Azure CLI 設定

使用下列命令建立/顯示/刪除用戶端

建立用戶端

az eventgrid namespace client create -g myRG --namespace-name myNS -n myClient

取得用戶端

az eventgrid namespace client show -g myRG --namespace-name myNS -n myClient

刪除用戶端

az eventgrid namespace client delete -g myRG --namespace-name myNS -n myClient

下一步