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ą:
IoT Hub punktów końcowych opisano różne punkty końcowe udostępniane przez każde centrum IoT na potrzeby operacji w czasie wykonywania i zarządzania.
Ograniczanie przepustowości i limity przydziału opisuje limity przydziału i zachowania ograniczania przepustowości, które mają zastosowanie do usługi IoT Hub.
Zestawy SDK urządzeń i usług azure IoT zawiera listę różnych zestawów SDK języka, których można używać podczas tworzenia aplikacji urządzeń i usług, które współdziałają z IoT Hub.
IoT Hub język zapytań opisuje język zapytań, którego można użyć do pobierania informacji z IoT Hub o bliźniaczych reprezentacjach urządzeń i zadaniach.
IoT Hub obsługa MQTT zawiera więcej informacji o obsłudze IoT Hub protokołu MQTT.
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: