Ćwiczenie — anulowanie aprowizacji pojedynczego urządzenia z rejestracji grupy
Istnieje wiele powodów, dla których może być konieczne anulowanie aprowizacji tylko części urządzeń zarejestrowanych w ramach rejestracji grupy. Na przykład urządzenie może nie być już potrzebne, nowsza wersja urządzenia może być dostępna lub może zostać uszkodzona lub naruszona.
Te kroki jawnie wyłączają certyfikat urządzenia i wyrejestruj wpisy centrum IoT dla jednego urządzenia, jednocześnie zezwalając innym urządzeniom, których poszczególne certyfikaty zostały podpisane przez urząd certyfikacji, aby nadal działały.
Aby usunąć aprowizację pojedynczego urządzenia z grupy rejestracji usługi DPS, należy wykonać dwie czynności:
Utwórz indywidualną rejestrację usługi DPS wyłączoną dla certyfikatu liścia (urządzenia) urządzenia.
Dwa czujniki utworzone na potrzeby tego modułu uwierzytelniają się za pośrednictwem grupy rejestracji czujników rejestracji w usłudze DPS. Ten krok jawnie odwołuje dostęp do usługi aprowizacji usługi DPS dla wyłączonego urządzenia, jednocześnie zezwalając na dostęp do usługi DPS dla innych urządzeń z certyfikatem podpisywania urzędu certyfikacji grupy rejestracji w łańcuchu. Nie należy usuwać wyłączonej rejestracji indywidualnej usługi DPS dla urządzenia, co pozwoliłoby na ponowne zarejestrowanie urządzenia za pośrednictwem grupy rejestracji.
Wyłącz lub usuń urządzenie z rejestru tożsamości centrum IoT Hub.
sensor-thl-001 i sensor-thl-002 zostały zarejestrowane w centrum IoT po uruchomieniu dwóch programów w języku C#. Ten krok wyłącza lub usuwa wpis rejestracji tożsamości z centrum IoT Hub.
Napiwek
Jeśli twoje rozwiązanie zawiera wiele centrów IoT, należy użyć listy aprowizowania urządzeń dla grupy rejestracji, aby znaleźć centrum IoT Hub, do którego zainicjowano aprowizację urządzenia. Dzięki temu można wyłączyć lub usunąć urządzenie. W tym ćwiczeniu użyjesz pojedynczego centrum IoT, aby nie trzeba było wyszukać centrum IoT Hub.
W tym ćwiczeniu anulujesz aprowizację pojedynczego urządzenia z grupy rejestracji.
Zadanie 1. Tworzenie wyłączonej rejestracji indywidualnej dla urządzenia
W tym zadaniu skonfigurujesz rejestrację indywidualną dla urządzenia sensor-thl-002 .
W piaskownicy platformy Azure utwórz rejestrację indywidualną wyłączoną dla czujnika-thl-002.
az iot dps enrollment create --dps-name dps-$suffix --enrollment-id sensor-thl-002 --attestation-type x509 --certificate-path ~/certificates/certs/sensor-thl-002-device.cert.pem --provisioning-status disabled
Uwaga
Parametr
--enrollment-id
musi być zgodny z identyfikatorem urządzenia zawartym w przekazanym certyfikacie urządzenia. Pamiętaj, że identyfikator urządzenia został ustawiony jako nazwa pospolita lub CN=, wartość certyfikatu urządzenia przy użyciucertGen.sh create_device_certificate sensor-thl-002
polecenia w lekcji 4 tego modułu. Jeśli identyfikator urządzenia nie jest zgodny z certyfikatem urządzenia CN, wyłączony rekord rejestracji nie zostanie rozpoznany, a program testowy będzie nadal mógł nawiązać połączenie z centrum IoT i wysyłać komunikaty telemetryczne.
Zadanie 2. Wyrejestrowanie urządzenia z centrum IoT Hub
W piaskownicy platformy Azure usuń urządzenie z rejestru urządzeń centrum IoT Hub.
az iot hub device-identity delete --hub-name hub-$suffix --device-id sensor-thl-002
Zadanie 3. Upewnij się, że urządzenie zostało anulowane
Przejdź do okna programu Visual Studio Code zawierającego projekt kodu sensor-thl-002-device.
Upewnij się, że wiersz polecenia znajduje się w lokalizacji folderu sensor-thl-002-device .
Uruchom aplikację urządzenia symulowanego.
dotnet run
Zwróć uwagę na wyjątki wymienione podczas próby aprowizacji urządzenia.
Gdy urządzenie próbuje nawiązać połączenie i uwierzytelnić się za pomocą usługi Device Provisioning Service (DPS), usługa najpierw wyszukuje rejestrację indywidualną zgodną z poświadczeniami identyfikatora urządzenia przed sprawdzeniem grup rejestracji w celu określenia, czy urządzenie można aprowizować. Jeśli usługa znajdzie wyłączoną rejestrację indywidualnego identyfikatora urządzenia dla urządzenia, uniemożliwia nawiązywanie połączenia z urządzeniem. Usługa uniemożliwia połączenie, nawet jeśli istnieje włączona grupa rejestracji dla pośredniego lub głównego urzędu certyfikacji w łańcuchu certyfikatów urządzenia.
Gdy aplikacja próbuje użyć skonfigurowanego certyfikatu X.509 w celu nawiązania połączenia z usługą DPS, usługa DPS zgłasza, że stan rejestracji urządzenia nie jest przypisany.
Found certificate: 13F32448E03F451E897B681758BAC593A60BFBFA CN=sensor-thl-002; PrivateKey: True Using certificate 13F32448E03F451E897B681758BAC593A60BFBFA CN=sensor-thl-002 ProvisioningClient AssignedHub: ; DeviceID: Unhandled exception. System.Exception: DeviceRegistrationResult.Status is NOT 'Assigned' at ContainerDevice.Program.ProvisionDevice(ProvisioningDeviceClient provisioningDeviceClient, SecurityProviderX509Certificate security) in C:\Users\howdc\Allfiles\Labs\06-Automatic Enrollment of Devices in DPS\Final\ContainerDevice2004\Program.cs:line 107 at ContainerDevice.Program.Main(String[] args) in C:\Users\howdc\Allfiles\Labs\06-Automatic Enrollment of Devices in DPS\Final\ContainerDevice2004\Program.cs:line 49 at ContainerDevice.Program.<Main>(String[] args)
Jeśli chcesz wrócić do usługi DPS i ustawić rejestrację poszczególnych urządzeń w celu włączenia lub usunięcia rejestracji indywidualnej, urządzenie będzie mogło ponownie uwierzytelnić się za pomocą usługi DPS i połączyć się z usługą IoT Hub. Jeśli rejestracja indywidualna zostanie usunięta, urządzenie zostanie automatycznie dodane z powrotem do rejestracji grupy.
Weryfikowanie pracy
Sprawdź, czy dla czujnika urządzenia thl-002 wyłączono rejestrację indywidualną usługi DPS.
az iot dps enrollment show --dps-name dps-$suffix --enrollment-id sensor-thl-002
Sprawdź informacje o stanie powrotu. Wartość
provisioningStatus
powinna mieć wartośćdisabled
."provisioningStatus": "disabled"
Sprawdź, czy urządzenie zostało wyrejestrowane z centrum IoT Hub.
az iot hub device-identity show --hub-name hub-$suffix --device-id sensor-thl-002
Powinien zostać wyświetlony
DeviceNotFound
komunikat o błędzie podobny do poniższego.{'Message': 'ErrorCode:DeviceNotFound;sensor-thl-002', 'ExceptionMessage': 'Tracking ID:06e0221675514160850421f0b3b787a9-G:0-TimeStamp:10/24/2023 16:53:16'}