共用方式為


了解 IoT 中樞的身分識別登錄

每個 IoT 中樞都有一個身分識別登錄,可儲存允許連線到該 IoT 中樞之裝置和模組的相關信息。 若要讓裝置或模組可以連線到 IoT 中樞,IoT 中樞的身分識別登錄中必須先有該裝置或模組的項目。 裝置或模組是根據儲存在身分識別登錄中的認證,使用 IoT 中樞驗證。

儲存在身分識別登錄中的裝置標識碼或模組標識符會區分大小寫。

身分識別登錄是具備 REST 功能的身分識別資源集合。 當您在身分識別登錄中新增項目時,IoT 中樞會建立一組個別裝置資源,例如包含正式發行前小眾測試版雲端到裝置訊息的佇列。

使用身分識別登錄來:

  • 佈建裝置或模組來連線到 IoT 中樞。
  • 控制每個裝置/每個模組對中樞端點的存取。

身分識別登錄作業

IoT 中樞身分識別登錄會公開下列作業:

  • 建立身分識別
  • 更新身分識別
  • 依標識符擷取身分識別
  • 刪除身分識別
  • 列出多達 1000 個識別
  • 將身分識別導出至 Azure Blob 記憶體
  • 從 Azure Blob 記憶體匯入身分識別

上述所有作業均可使用 RFC7232 中指定的開放式並行存取。

IoT 中樞 身分識別登錄不包含任何應用程式元數據。

重要

只能將身分識別登錄用於裝置管理和佈建作業。 執行階段的高輸送量作業不應該仰賴在身分識別登錄中執行作業。 例如,在傳送命令前先檢查裝置的連線狀態就不是支援的模式。 請務必檢查身分識別登錄的節流速率

注意

裝置或模組身分識別建立之後可能需要經過幾秒鐘才可供擷取。 如果失敗,請對裝置或模組身分識別重試 get 作業。

停用裝置

您可以在身分識別登錄中更新身分識別的 [狀態] 屬性來停用裝置。 一般而言,您會在兩個案例中使用此屬性:

  • 在佈建協調流程程序期間。 如需詳細資訊,請參閱裝置佈建

  • 如果因為任何原因,您認為裝置遭到入侵,或變成未經授權。

    重要

    使用憑證式驗證驗證裝置時,IoT 中樞不會檢查憑證撤銷清單。 如果您有因為憑證可能遭入侵而無法連線到 IoT 中樞的裝置,您應該停用身分識別登錄中的裝置。

模組無法使用這項功能。

如需詳細資訊,請參閱 在 IoT 中樞停用或刪除裝置

匯入和匯出裝置身分識別

擷取IoT中樞身分識別登錄中所有身分識別的唯一方法是使用導出功能。

在 IoT 中樞 資源提供者端點上使用異步操作,從IoT中樞的身分識別登錄大量匯入或導出裝置身分識別。 匯入和匯出是使用客戶提供的 Blob 容器的長時間執行作業。

如需有關匯入和匯出 API 的詳細資訊,請參閱 IoT 中樞資源提供者 REST API。 若要深入了解如何執行匯入和匯出作業,請參閱大量管理 IoT 中樞的裝置身分識別

裝置身分識別也可以透過 REST API 或其中一個 IoT 中樞服務 SDK,從 IoT 中樞導出和匯入。

裝置佈建

給定的 IoT 解決方案儲存的裝置資料取決於該解決方案的特定需求。 但是解決方案至少必須儲存裝置身分識別和驗證金鑰。 IoT 中樞 身分識別登錄可以儲存每個裝置的值,例如標識碼、驗證密鑰和狀態代碼。 解決方案可以使用其他 Azure 服務 (例如表格儲存體、Blob 儲存體或 Azure Cosmos DB) 來儲存其他裝置資料。

裝置佈建 是將初始裝置資料加入至解決方案中存放區的程序。 若要讓新的裝置連線到您的中樞,您可以將裝置識別碼和密鑰新增至 IoT 中樞 身分識別登錄。 做為佈建程序的一部分,您可能需要初始化其他解決方案存放區中的裝置特定資料。 您也可以使用 Azure IoT 中樞裝置佈建服務,對一或多個 IoT 中樞進行零接觸的 Just-In-Time 自動佈建。 若要深入瞭解,請參閱 裝置布建服務檔

裝置和模組生命週期通知

在建立或刪除裝置身分識別時,IoT 中樞可以傳送生命週期通知以通知 IoT 解決方案。 若要這樣做,您的 IoT 解決方案必須建立路由,並將資料來源設為等於 DeviceLifecycleEvents。 根據預設,系統不會傳送任何生命週期通知,不存在此類路由。 藉由建立數據源等於 DeviceLifecycleEvents 的路由,系統會針對裝置身分識別和模組身分識別傳送生命週期事件。 訊息內容會因模組身分識別或裝置身分識別而產生事件而有所不同。 若要深入了解通知訊息中傳回的屬性和本文,請參閱非遙測事件結構描述

IoT Edge 模組的模組身分識別建立通知與其他模組的通知不同。 針對 IoT Edge 模組,只有在對應的 IoT Edge 裝置正在執行時,才會傳送建立通知。 至於其他所有模組,每當 IoT 中樞端更新模組身分識別時,就會傳送生命週期通知。

裝置身分識別屬性

裝置身分識別會以 JSON 檔表示,其中包含下列屬性:

屬性 選項。 描述
deviceId 必要,更新時為唯讀 區分大小寫的字串,最長為 128 個字元,可使用 ASCII 7 位元英數字元和某些特殊字元:- . % _ * ? ! ( ) , : = @ $ '。 不支援特殊字元 + #
generationId 必要、唯讀 IoT 中樞 產生的區分大小寫字串,長度最多可達 128 個字元。 刪除並重新建立具有相同 deviceID 的裝置時,該值用於區分它們。
etag 必要、唯讀 依據 RFC7232,此字串代表裝置身分識別的弱式 ETag。
驗證 (authentication) 選用 包含驗證資訊和安全性材料的複合物件。 如需詳細資訊,請參閱 REST API 文件中的驗證機制
能力 選用 裝置的功能集。 例如,裝置是否為邊緣裝置。 如需詳細資訊,請參閱 REST API 文件中的裝置功能
deviceScope 選用 裝置的範圍。 在邊緣裝置中,自動產生且不可變。 在非邊緣裝置中已淘汰。 不過,在子 (分葉) 裝置中,請將此屬性設定為與 parentScopes 屬性相同的值 (父裝置的 deviceScope),以保留對於舊版 API 的回溯相容性。 如需詳細資訊,請參閱 IoT Edge 作為閘道:父子關係
parentScopes 選用 子裝置直系父代的範圍 (父裝置的 deviceScope 屬性值)。 在邊緣裝置中,如果裝置沒有父代,則此值是空的。 在非邊緣裝置中,如果裝置沒有父代,則此屬性不存在。 如需詳細資訊,請參閱 IoT Edge 作為閘道:父子關係
status 必要 存取指示器。 可以是 EnabledDisabled。 如果 Enabled為 ,則允許裝置連線。 如果 Disabled為 ,則裝置無法存取任何面向裝置的端點。
statusReason 選用 長達 128 個字元的字串,用於儲存裝置身份識別狀態的原因。 允許所有 UTF-8 字元。
statusUpdateTime 唯讀 時態性指示器,顯示上次狀態更新的日期和時間。
connectionState 唯讀 表示連線狀態的欄位: ConnectedDisconnected。 此欄位代表 IoT 中樞角度的裝置連線狀態。 重要事項:此欄位僅應作為開發/偵錯用途。 僅針對使用 MQTT 或 AMQP 的裝置更新連線狀態。 此外,這是以通訊協定層級的偵測 (MQTT 偵測或 AMQP 偵測) 為基礎,而且最多只能有 5 分鐘的延遲。 基於這些理由,可能會有誤判為真的情形,例如已中斷連線的裝置回報為已連線。
connectionStateUpdatedTime 唯讀 時態性指示器,顯示上線狀態更新的日期和時間。
lastActivityTime 唯讀 時態性指示器,顯示裝置連線、接收或傳送訊息的日期和時間。 此屬性最終一致,但可能延遲長達 5 到 10 分鐘。 因此,不應該用於生產案例中。

注意

連線狀態僅能代表連線狀態的 IoT 中樞檢視。 視網路狀況和設定,此狀態的更新可能會延遲。

模組身分識別屬性

模組身分識別會以 JSON 檔表示,其中包含下列屬性:

屬性 選項。 描述
deviceId 必要,更新時為唯讀 區分大小寫的字串,最長為 128 個字元,可使用 ASCII 7 位元英數字元和某些特殊字元:- . % _ * ? ! ( ) , : = @ $ '
moduleId 必要,更新時為唯讀 區分大小寫的字串,最長為 128 個字元,可使用 ASCII 7 位元英數字元和某些特殊字元:- . % _ * ? ! ( ) , : = @ $ '。 不支援特殊字元 + #
generationId 必要、唯讀 IoT 中樞產生、區分大小寫的字串 (最長為 128 個字元)。 此值可用來在刪除並重建裝置時,區分具有相同 deviceId 的裝置。
etag 必要、唯讀 依據 RFC7232,此字串代表裝置身分識別的弱式 ETag。
驗證 (authentication) 選用 包含驗證資訊和安全性材料的複合物件。 如需詳細資訊,請參閱 REST API 文件中的驗證機制
managedBy 選用 識別管理此課程模組的人員。 例如,如果 Edge 執行時間擁有此模組,則此值為 IoT Edge
cloudToDeviceMessageCount 唯讀 目前排入佇列中等待傳送至模組的雲端到模組訊息數目。
connectionState 唯讀 表示連線狀態的欄位: ConnectedDisconnected。 此欄位代表 IoT 中樞角度的裝置連線狀態。 重要事項:此欄位僅應作為開發/偵錯用途。 僅針對使用 MQTT 或 AMQP 的裝置更新連線狀態。 此外,這是以通訊協定層級的偵測 (MQTT 偵測或 AMQP 偵測) 為基礎,而且最多只能有 5 分鐘的延遲。 基於這些理由,可能會有誤判為真的情形,例如已中斷連線的裝置回報為已連線。
connectionStateUpdatedTime 唯讀 時態性指示器,顯示上線狀態更新的日期和時間。
lastActivityTime 唯讀 時態性指示器,顯示裝置連線、接收或傳送訊息的日期和時間。

若要探索使用 IoT 中樞裝置佈建服務進行 Just-In-Time 自動佈建,請參閱: