Azure / Azure/azure-iot-sdk-csharp
[Bug Report] [IoTSDK] Issue with IotHubUnauthorizedAccess only when using X.509 Cert to GetFileUploadSasUriAsync[Bug Report]
- Dominant language
- C#
- Stars
- 477
- Forks
- 492
- Avg merge
- 9h 55m
- Merged PRs (30d)
- 2
Description
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
- **OS, version, SKU and CPU architecture used**: Windows 10 Enterprise | Intel(R) Core(TM) i7
- **Application's .NET Target Framework** : net6.0
- **Device**: Laptop
## 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:

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:

With:

Definition of GetCertificateByThumbprint

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.
Contributor guide
Research direction
Start with provisioning/device/samples/getting started/X509Sample/ProvisioningDeviceClientSample.cs and inspect how the client is created before GetFileUploadSasUriAsync. Compare the certificate-based calls shown in the issue, update the sample so file upload works with X.509 authentication, and verify the example remains consistent with the referenced SDK versions.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- documentation
- Issue type
- Documentation
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100