Azure / azure-iot-sdk-csharp

A C# SDK for connecting devices to Microsoft Azure IoT services
Other
463 stars 493 forks source link

[Bug Report] [IoTSDK] Issue with IotHubUnauthorizedAccess only when using X.509 Cert to GetFileUploadSasUriAsync[Bug Report] #3364

Open tweickmans opened 1 year ago

tweickmans commented 1 year ago

Hello I implemented communication between a device and a IotHub. I use Microsoft.Azure.devices.client 1.42.0 & Microsoft.Azure.devices.Provisioning.client 1.19.3 SDK

Context

Description of the issue

I started from the following example. : provisioning/device/samples/getting started/X509Sample/ProvisioningDeviceClientSample.cs.

When uploading a file, we start by doing this: image

Unfortunately, if we use the example: provisioning/device/samples/getting started/X509Sample/ProvisioningDeviceClientSample.cs. The call to the GetFileUploadSasUriAsync method generates an exception IotHubUnauthorizedAccess (even though the device was successfully provisioned through DPS on the IoT Hub).

After several searches, I came across other examples that allow the file upload to work, and this with authentication via x509 certificate.

It seems that you just need to replace the following lines: image With: image

Definition of GetCertificateByThumbprint image

It took me some time to get this to work, and I believe that updating the example could greatly help future users. I'm also interested in understanding the exact difference between these two calls...

...and why this difference in the call only impacts the file upload functionality.