Azure IoT RegistryManager,阻止重复使用证书

Azure IoT RegistryManager, block reusing certificates

我正在尝试查找是否可以使用 RegistryManager 使其在证书的指纹已在另一台设备上使用时不注册设备。

_registryManager = RegistryManager.CreateFromConnectionString(_connectionString);
            Microsoft.Azure.Devices.Device device;

            try
            {
                Console.WriteLine("Registering Device using X.509 certificate for authentication");
                device = await _registryManager.AddDeviceAsync(new Microsoft.Azure.Devices.Device(deviceId)
                {
                    Authentication = new AuthenticationMechanism()
                    {
                        X509Thumbprint = new X509Thumbprint()
                        {
                            PrimaryThumbprint = certificate2.Thumbprint
                        }
                    }
                }).ConfigureAwait(false);
            }

因此,如果调用上面的代码并且另一台设备具有该指纹,我希望它失败。或者我希望能够查看所有现有的指纹,以便我可以在注册前手动检查。

我无法通过 RegistryManager 执行此操作。

Alternatively I want to be able to view all existing thumbprints so i can manually check before registering.

您可以获得这样的现有指纹:

        var _registryManager = RegistryManager.CreateFromConnectionString(_connectionString);
        var devices = await _registryManager.GetDevicesAsync(100); //Here I use 100 for testing purpose. Replace this value with yours.
        foreach (var dev in devices)
        {
            if (dev.Authentication.X509Thumbprint.IsValid(false))
            {
                var primaryThumbprint = dev.Authentication.X509Thumbprint.PrimaryThumbprint;
                var secondaryThumbprint = dev.Authentication.X509Thumbprint.SecondaryThumbprint;
                Console.WriteLine("primaryThumbprint:" + primaryThumbprint);
                Console.WriteLine("SecondaryThumbprint:" + SecondaryThumbprint);
            }
        }