Skip to content

Commit

Permalink
fix: Username may be required when MQTT cert authentication (#1215)
Browse files Browse the repository at this point in the history
* fix: Username may be required when MQTT cert authentication

Signed-off-by: ancientxu <ancientxu@gmail.com>
  • Loading branch information
jekaxv authored Nov 6, 2022
1 parent 69f97d0 commit 1bb3010
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 5 deletions.
5 changes: 4 additions & 1 deletion pkg/secure/mqttfactory.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,9 +82,12 @@ func (factory MqttFactory) configureMQTTClientForAuth(secretData *messaging.Secr
InsecureSkipVerify: factory.skipCertVerify,
MinVersion: tls.VersionTLS12,
}
// Username may be required when cert authentication
if secretData.Username != "" {
factory.opts.SetUsername(secretData.Username)
}
switch factory.authMode {
case messaging.AuthModeUsernamePassword:
factory.opts.SetUsername(secretData.Username)
factory.opts.SetPassword(secretData.Password)
case messaging.AuthModeCert:
cert, err = tls.X509KeyPair(secretData.CertPemBlock, secretData.KeyPemBlock)
Expand Down
8 changes: 4 additions & 4 deletions pkg/secure/mqttfactory_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@
package secure

import (
mqtt "github.com/eclipse/paho.mqtt.golang"
"os"
"testing"

"github.com/eclipse/paho.mqtt.golang"
bootstrapContainer "github.com/edgexfoundry/go-mod-bootstrap/v2/bootstrap/container"
"github.com/edgexfoundry/go-mod-bootstrap/v2/bootstrap/messaging"
"github.com/edgexfoundry/go-mod-bootstrap/v2/di"
Expand Down Expand Up @@ -143,7 +143,7 @@ func TestConfigureMQTTClientForAuthWithCACert(t *testing.T) {

require.NoError(t, err)
assert.NotNil(t, target.opts.TLSConfig.RootCAs)
assert.Empty(t, target.opts.Username)
assert.Equal(t, target.opts.Username, "Username")
assert.Empty(t, target.opts.Password)
assert.Nil(t, target.opts.TLSConfig.Certificates)
}
Expand All @@ -159,7 +159,7 @@ func TestConfigureMQTTClientForAuthWithClientCert(t *testing.T) {
CaPemBlock: []byte(testCACert),
})
require.NoError(t, err)
assert.Empty(t, target.opts.Username)
assert.Equal(t, target.opts.Username, "Username")
assert.Empty(t, target.opts.Password)
assert.NotNil(t, target.opts.TLSConfig.Certificates)
assert.NotNil(t, target.opts.TLSConfig.RootCAs)
Expand All @@ -177,7 +177,7 @@ func TestConfigureMQTTClientForAuthWithClientCertNoCA(t *testing.T) {
})

require.NoError(t, err)
assert.Empty(t, target.opts.Username)
assert.Equal(t, target.opts.Username, messaging.SecretUsernameKey)
assert.Empty(t, target.opts.Password)
assert.NotNil(t, target.opts.TLSConfig.Certificates)
assert.Nil(t, target.opts.TLSConfig.RootCAs)
Expand Down

0 comments on commit 1bb3010

Please sign in to comment.