Informacje o rejestrze tożsamości w centrum IoT

Każde centrum IoT ma rejestr tożsamości, który przechowuje informacje o urządzeniach i modułach, które mogą łączyć się z centrum IoT. Aby urządzenie lub moduł mógł nawiązać połączenie z centrum IoT Hub, musi istnieć wpis dla tego urządzenia lub modułu w rejestrze tożsamości centrum IoT. Urządzenie lub moduł musi również uwierzytelniać się w centrum IoT na podstawie poświadczeń przechowywanych w rejestrze tożsamości.

Identyfikator urządzenia lub modułu przechowywany w rejestrze tożsamości ma wielkość liter.

Na wysokim poziomie rejestr tożsamości jest kolekcją zasobów tożsamości z obsługą interfejsu REST lub urządzenia lub modułu. Po dodaniu wpisu w rejestrze tożsamości IoT Hub tworzy zestaw zasobów dla poszczególnych urządzeń, takich jak kolejka zawierająca komunikaty w chmurze do urządzenia w locie.

Użyj rejestru tożsamości, jeśli musisz:

  • Aprowizuj urządzenia lub moduły łączące się z centrum IoT.
  • Kontrolowanie dostępu poszczególnych urządzeń/modułów do urządzeń lub punktów końcowych centrum.

Operacje rejestru tożsamości

Rejestr tożsamości IoT Hub uwidacznia następujące operacje:

  • Tworzenie tożsamości urządzenia lub modułu
  • Aktualizowanie tożsamości urządzenia lub modułu
  • Pobieranie tożsamości urządzenia lub modułu według identyfikatora
  • Usuwanie tożsamości urządzenia lub modułu
  • Wyświetlanie listy do 1000 tożsamości
  • Eksportowanie tożsamości urządzeń do usługi Azure Blob Storage
  • Importowanie tożsamości urządzeń z usługi Azure Blob Storage

Wszystkie te operacje mogą używać optymistycznej współbieżności, jak określono w RFC7232.

Ważne

Jedynym sposobem pobrania wszystkich tożsamości w rejestrze tożsamości centrum IoT jest użycie funkcji Eksportuj .

Rejestr tożsamości IoT Hub:

  • Nie zawiera żadnych metadanych aplikacji.

Ważne

Do zarządzania urządzeniami i aprowizacji należy używać rejestru tożsamości. Operacje o wysokiej przepływności w czasie wykonywania nie powinny zależeć od wykonywania operacji w rejestrze tożsamości. Na przykład sprawdzanie stanu połączenia urządzenia przed wysłaniem polecenia nie jest obsługiwanym wzorcem. Upewnij się, że sprawdź współczynniki ograniczania dla rejestru tożsamości.

Uwaga

Pobranie tożsamości urządzenia lub modułu może potrwać kilka sekund. Spróbuj ponownie wykonać get operację tożsamości urządzeń lub modułów w przypadku awarii.

Wyłączanie urządzeń

Urządzenia można wyłączyć, aktualizując właściwość statusu tożsamości w rejestrze tożsamości. Zazwyczaj ta właściwość jest używana w dwóch scenariuszach:

  • Podczas procesu aranżacji aprowizacji. Aby uzyskać więcej informacji, zobacz Device Provisioning (Aprowizowanie urządzeń).

  • Jeśli uważasz, że urządzenie zostało naruszone lub stało się nieautoryzowane z jakiegokolwiek powodu.

    Ważne

    IoT Hub nie sprawdza list odwołania certyfikatów podczas uwierzytelniania urządzeń przy użyciu uwierzytelniania opartego na certyfikatach. Jeśli masz urządzenie, które musi zostać zablokowane z połączeniem z IoT Hub z powodu potencjalnie naruszonego certyfikatu, należy wyłączyć urządzenie w rejestrze tożsamości.

Ta funkcja nie jest dostępna dla modułów.

Aby uzyskać więcej informacji, zobacz Wyłączanie lub usuwanie urządzenia w centrum IoT.

Importowanie i eksportowanie tożsamości urządzeń

Użyj operacji asynchronicznych w punkcie końcowym dostawcy zasobów IoT Hub, aby wyeksportować tożsamości urządzeń zbiorczo z rejestru tożsamości centrum IoT. Eksporty to długotrwałe zadania, które używają dostarczonego przez klienta kontenera obiektów blob w celu zapisania danych tożsamości urządzenia odczytanych z rejestru tożsamości.

Użyj operacji asynchronicznych w punkcie końcowym dostawcy zasobów IoT Hub, aby zbiorczo zaimportować tożsamości urządzeń do rejestru tożsamości centrum IoT. Importy to długotrwałe zadania, które używają danych w kontenerze obiektów blob dostarczonych przez klienta do zapisywania danych tożsamości urządzenia w rejestrze tożsamości.

Aby uzyskać więcej informacji na temat interfejsów API importowania i eksportowania, zobacz interfejsy API REST dostawcy zasobów IoT Hub. Aby dowiedzieć się więcej na temat uruchamiania zadań importowania i eksportowania, zobacz Zbiorcze zarządzanie tożsamościami urządzeń IoT Hub.

Tożsamości urządzeń można również eksportować i importować z centrum IoT Przy użyciu interfejsu API usługi za pomocą interfejsu API REST lub jednego z zestawów SDK usługi IoT Hub.

Aprowizowanie urządzeń

Dane urządzenia, które przechowuje dane rozwiązania IoT, zależą od konkretnych wymagań tego rozwiązania. Jednak co najmniej rozwiązanie musi przechowywać tożsamości urządzeń i klucze uwierzytelniania. Azure IoT Hub zawiera rejestr tożsamości, który może przechowywać wartości dla każdego urządzenia, takiego jak identyfikatory, klucze uwierzytelniania i kody stanu. Rozwiązanie może używać innych usług platformy Azure, takich jak Table Storage, Blob Storage lub Azure Cosmos DB do przechowywania innych danych urządzenia.

Aprowizowanie urządzeń to proces dodawania początkowych danych urządzenia do magazynów w rozwiązaniu. Aby umożliwić nowemu urządzeniu nawiązanie połączenia z centrum, należy dodać identyfikator urządzenia i klucze do rejestru tożsamości IoT Hub. W ramach procesu aprowizacji może być konieczne zainicjowanie danych specyficznych dla urządzenia w innych magazynach rozwiązań. Możesz również użyć usługi Azure IoT Hub Device Provisioning Service, aby umożliwić aprowizację bezobsługową, just in time do co najmniej jednego centrum IoT bez konieczności interwencji człowieka. Aby dowiedzieć się więcej, zobacz dokumentację usługi aprowizacji.

Powiadomienia dotyczące cyklu życia urządzenia i modułu

IoT Hub może powiadomić rozwiązanie IoT o utworzeniu lub usunięciu tożsamości urządzenia, wysyłając powiadomienia o cyklu życia. Aby to zrobić, rozwiązanie IoT musi utworzyć trasę i ustawić źródło danych równe DeviceLifecycleEvents. Domyślnie nie są wysyłane żadne powiadomienia o cyklu życia, czyli nie istnieją żadne takie trasy. Tworząc trasę ze źródłem danych równym DeviceLifecycleEvents, zdarzenia cyklu życia są wysyłane zarówno dla tożsamości urządzeń, jak i tożsamości modułów; jednak zawartość komunikatu różni się w zależności od tego, czy zdarzenia są generowane dla tożsamości modułu lub tożsamości urządzeń. Należy zauważyć, że w przypadku modułów IoT Edge przepływ tworzenia tożsamości modułu jest inny niż w przypadku innych modułów, w wyniku IoT Edge modułów powiadomienie tworzenia jest wysyłane tylko wtedy, gdy odpowiednie urządzenie IoT Edge dla zaktualizowanej tożsamości modułu IoT Edge jest uruchomiona. W przypadku wszystkich innych modułów powiadomienia o cyklu życia są wysyłane za każdym razem, gdy tożsamość modułu zostanie zaktualizowana po stronie IoT Hub. Aby dowiedzieć się więcej o właściwościach i treści zwracanych w komunikacie powiadomienia, zobacz Schematy zdarzeń niezwiązanych z telemetrią.

Właściwości tożsamości urządzenia

Tożsamości urządzeń są reprezentowane jako dokumenty JSON z następującymi właściwościami:

Właściwość Opcje Opis
deviceId wymagane, tylko do odczytu w aktualizacjach Ciąg z uwzględnieniem wielkości liter (maksymalnie 128 znaków) znaków alfanumerycznych ASCII 7-bitowych oraz określone znaki specjalne: - . % _ * ? ! ( ) , : = @ $ '. Znaki specjalne: + # nie są obsługiwane.
generationId wymagane, tylko do odczytu Wygenerowany przez centrum IoT ciąg z uwzględnieniem wielkości liter do 128 znaków. Ta wartość służy do rozróżniania urządzeń z tym samym identyfikatorem deviceId, gdy zostały usunięte i ponownie utworzone.
Etag wymagane, tylko do odczytu Ciąg reprezentujący słaby element ETag dla tożsamości urządzenia zgodnie z specyfikacją RFC7232.
uwierzytelnianie optional Obiekt złożony zawierający informacje o uwierzytelnianiu i materiały zabezpieczające. Aby uzyskać więcej informacji, zobacz Mechanizm uwierzytelniania w dokumentacji interfejsu API REST.
możliwości optional Zestaw możliwości urządzenia. Na przykład niezależnie od tego, czy urządzenie jest urządzeniem brzegowym, czy nie. Aby uzyskać więcej informacji, zobacz Funkcje urządzeń w dokumentacji interfejsu API REST.
deviceScope optional Zakres urządzenia. Na urządzeniach brzegowych generowane automatycznie i niezmienne. Przestarzałe na urządzeniach innych niż brzegowe. Jednak w urządzeniach podrzędnych (liścia) ustaw tę właściwość na taką samą wartość jak właściwość parentScopes ( deviceScope urządzenia nadrzędnego) w celu zapewnienia zgodności z poprzednimi wersjami interfejsu API. Aby uzyskać więcej informacji, zobacz IoT Edge jako brama: relacje nadrzędne i podrzędne.
parentScopes optional Zakres bezpośredniego elementu nadrzędnego urządzenia podrzędnego (wartość właściwości deviceScope urządzenia nadrzędnego). W przypadku urządzeń brzegowych wartość jest pusta, jeśli urządzenie nie ma elementu nadrzędnego. W przypadku urządzeń innych niż brzegowe właściwość nie jest obecna, jeśli urządzenie nie ma elementu nadrzędnego. Aby uzyskać więcej informacji, zobacz IoT Edge jako brama: relacje nadrzędne i podrzędne.
status wymagane Wskaźnik dostępu. Można włączyć lub wyłączyć. Jeśli to ustawienie jest włączone, urządzenie może nawiązać połączenie. Jeśli to urządzenie jest wyłączone, nie będzie mogło uzyskać dostępu do żadnego punktu końcowego dostępnego dla urządzenia.
statusReason optional 128-znakowy ciąg, który przechowuje przyczynę stanu tożsamości urządzenia. Dozwolone są wszystkie znaki UTF-8.
statusUpdateTime tylko do odczytu Wskaźnik czasowy pokazujący datę i godzinę ostatniej aktualizacji stanu.
connectionState tylko do odczytu Pole wskazujące stan połączenia: Połączono lub Rozłączono. To pole reprezentuje widok IoT Hub stanu połączenia urządzenia. Ważne: to pole powinno być używane tylko do celów programowania/debugowania. Stan połączenia jest aktualizowany tylko dla urządzeń korzystających z protokołu MQTT lub AMQP. Ponadto jest on oparty na poleceniach ping na poziomie protokołu (ping MQTT lub ping amQP) i może mieć maksymalne opóźnienie tylko 5 minut. Z tych powodów mogą występować wyniki fałszywie dodatnie, takie jak urządzenia rozłączone zgłoszone jako połączone.
connectionStateUpdatedTime tylko do odczytu Wskaźnik czasowy pokazujący datę i godzinę ostatniej aktualizacji stanu połączenia.
lastActivityTime tylko do odczytu Wskaźnik czasowy pokazujący datę i godzinę ostatniego połączenia, odebrania lub wysłania komunikatu przez urządzenie. Ta właściwość jest ostatecznie spójna, ale może być opóźniona do 5 do 10 minut. Z tego powodu nie należy jej używać w scenariuszach produkcyjnych.

Uwaga

Stan połączenia może reprezentować tylko widok IoT Hub stanu połączenia. Aktualizacje do tego stanu może być opóźniony, w zależności od warunków sieci i konfiguracji.

Uwaga

Obecnie zestawy SDK urządzeń nie obsługują używania + znaków i # w identyfikatorze deviceId.

Właściwości tożsamości modułu

Tożsamości modułów są reprezentowane jako dokumenty JSON z następującymi właściwościami:

Właściwość Opcje Opis
deviceId wymagane, tylko do odczytu dotyczące aktualizacji Ciąg uwzględniający wielkość liter (do 128 znaków długości) znaków alfanumerycznych ASCII 7-bitowych oraz niektóre znaki specjalne: - . + % _ # * ? ! ( ) , : = @ $ '.
moduleId wymagane, tylko do odczytu dotyczące aktualizacji Ciąg uwzględniający wielkość liter (do 128 znaków długości) znaków alfanumerycznych ASCII 7-bitowych oraz niektóre znaki specjalne: - . + % _ # * ? ! ( ) , : = @ $ '.
generationId wymagane, tylko do odczytu Ciąg generowany przez centrum IoT o długości do 128 znaków. Ta wartość służy do odróżnienia urządzeń za pomocą tego samego identyfikatora deviceId, gdy zostały usunięte i ponownie utworzone.
Etag wymagane, tylko do odczytu Ciąg reprezentujący słaby element ETag dla tożsamości urządzenia zgodnie z RFC7232.
uwierzytelnianie optional Obiekt złożony zawierający informacje o uwierzytelnianiu i materiały zabezpieczające. Aby uzyskać więcej informacji, zobacz Mechanizm uwierzytelniania w dokumentacji interfejsu API REST.
managedBy optional Określa, kto zarządza tym modułem. Na przykład ta wartość to "IoT Edge", jeśli środowisko uruchomieniowe brzegowe jest właścicielem tego modułu.
cloudToDeviceMessageCount tylko do odczytu Liczba komunikatów z chmury do modułu, które mają być obecnie wysyłane do modułu.
connectionState tylko do odczytu Pole wskazujące stan połączenia: Połączono lub Rozłączono. To pole reprezentuje widok IoT Hub stanu połączenia urządzenia. Ważne: to pole powinno być używane tylko do celów programowania/debugowania. Stan połączenia jest aktualizowany tylko dla urządzeń korzystających z protokołu MQTT lub AMQP. Ponadto jest on oparty na poleceniach ping na poziomie protokołu (ping MQTT lub ping amQP) i może mieć maksymalne opóźnienie tylko 5 minut. Z tych powodów mogą występować wyniki fałszywie dodatnie, takie jak urządzenia rozłączone zgłoszone jako połączone.
connectionStateUpdatedTime tylko do odczytu Wskaźnik czasowy pokazujący datę i godzinę ostatniej aktualizacji stanu połączenia.
lastActivityTime tylko do odczytu Wskaźnik czasowy pokazujący datę i godzinę ostatniego połączenia, odebrania lub wysłania komunikatu przez urządzenie.

Uwaga

Obecnie zestawy SDK urządzeń nie obsługują używania + znaków i # w identyfikatorze deviceId i moduleId.

Dodatkowe materiały referencyjne

Inne artykuły referencyjne w przewodniku dla deweloperów IoT Hub obejmują:

Następne kroki

Teraz, gdy wiesz już, jak korzystać z rejestru tożsamości IoT Hub, możesz zainteresować się następującymi artykułami z przewodnika dla deweloperów IoT Hub:

Aby zapoznać się z użyciem usługi IoT Hub Device Provisioning, aby włączyć aprowizację typu just in time, zobacz: