Question: missing documentation / sample for using Client Certificates with the new MqttClientOptionsBuilder / WithTlsOptions / WithClientCertificatesProvider
- Dominant language
- C#
- Stars
- 5.1k
- Forks
- 1.2k
- PR merge metrics
- No merged PRs in 30d
Description
### Describe your question
I upgraded to `4.3.6.1152` coming from `4.2.1.781`
### Which project is your question related to?
I was using this code to **attach client certificates** for MQTT client authentication:
``` c#
var mqttClientOptions = new MqttClientOptionsBuilder()
.WithTcpServer(
connectionInfo.MqttConnectionInformation.MqttUri,
connectionInfo.MqttConnectionInformation.MqttPort)
.WithClientId(connectionInfo.MqttConnectionInformation.ClientId)
.WithTls(new MqttClientOptionsBuilderTlsParameters
{
UseTls = true,
SslProtocol = System.Security.Authentication.SslProtocols.Tls12,
// this is one X509Certificate2
Certificates = new[] { myClientCertificates },
CertificateValidationHandler = delegate { return true; },
})
.WithProtocolVersion(MQTTnet.Formatter.MqttProtocolVersion.V500)
.Build();
```
This was throwing the following warnings:
> warning CS0618: 'MqttClientOptionsBuilderTlsParameters' is obsolete: 'Use methods from MqttClientOptionsBuilder instead.'
warning CS0618: 'MqttClientOptionsBuilderTlsParameters.Certificates' is obsolete: 'Use CertificatesProvider instead.'
warning CS0618: 'MqttClientOptionsBuilder.WithTls(MqttClientOptionsBuilderTlsParameters)' is obsolete: 'Use WithTlsOptions(... configure) instead.'
I managed to resolve the ssl protocol and validation warning but I do not know how to resolve the issue with the `CertificatesProvider`. There is no sample or documentation (I could find) on how to do this. Can you please help me out here?
``` c#
var mqttClientOptions = new MqttClientOptionsBuilder()
.WithTcpServer(
connectionInfo.MqttConnectionInformation.MqttUri,
connectionInfo.MqttConnectionInformation.MqttPort)
.WithClientId(connectionInfo.MqttConnectionInformation.ClientId)
.WithTlsOptions(opt =>
{
opt.WithSslProtocols(SslProtocols.Tls12);
opt.WithCertificateValidationHandler(_ => true);
opt.WithClientCertificatesProvider(...???...);
})
.WithProtocolVersion(MQTTnet.Formatter.MqttProtocolVersion.V500)
.Build();
```
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.