2017-02-23 2 views
0

인증서의 지문이 이미 다른 장치에서 사용중인 경우 RegistryManager를 사용하여 장치를 등록하지 못하게하려고합니다.Azure IoT 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를 통해이를 수행 할 수있는 방법이 없습니다.

답변

1

또는 기존의 모든 지문을보고 싶기 때문에 을 수동으로 등록하기 전에 확인할 수 있습니다. 이 같은

당신은 기존 얻을 수있는 엄지 손가락 지문 :

 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); 
      } 
     }