Connect with Username/Password Authentication
Connect securely to an MQTT broker using basic authentication credentials.
Basic Example
using HiveMQtt.Client;
using HiveMQtt.MQTT5.ReasonCodes;
var options = new HiveMQClientOptionsBuilder()
.WithBroker("your-broker.hivemq.cloud")
.WithPort(8883)
.WithUseTls(true)
.WithUserName("my-username")
.WithPassword("my-password")
.Build();
var client = new HiveMQClient(options);
var connectResult = await client.ConnectAsync().ConfigureAwait(false);
if (connectResult.ReasonCode == ConnAckReasonCode.Success)
{
Console.WriteLine("Connected successfully!");
}
Security Best Practices
warning
Never hardcode credentials in your source code. Use environment variables, configuration files, or a secrets manager.
SecureString Support
For enhanced security, use SecureString to prevent password exposure in memory. See the Security Best Practices guide for details.
Using Environment Variables
var options = new HiveMQClientOptionsBuilder()
.WithBroker(Environment.GetEnvironmentVariable("MQTT_BROKER"))
.WithPort(8883)
.WithUseTls(true)
.WithUserName(Environment.GetEnvironmentVariable("MQTT_USERNAME"))
.WithPassword(Environment.GetEnvironmentVariable("MQTT_PASSWORD"))
.Build();
Using Configuration (appsettings.json)
// In appsettings.json:
// {
// "Mqtt": {
// "Broker": "your-broker.hivemq.cloud",
// "Username": "your-username",
// "Password": "your-password"
// }
// }
var mqttConfig = configuration.GetSection("Mqtt");
var options = new HiveMQClientOptionsBuilder()
.WithBroker(mqttConfig["Broker"])
.WithPort(8883)
.WithUseTls(true)
.WithUserName(mqttConfig["Username"])
.WithPassword(mqttConfig["Password"])
.Build();
Handling Authentication Failures
using HiveMQtt.MQTT5.ReasonCodes;
var connectResult = await client.ConnectAsync().ConfigureAwait(false);
switch (connectResult.ReasonCode)
{
case ConnAckReasonCode.Success:
Console.WriteLine("Connected!");
break;
case ConnAckReasonCode.BadUserNameOrPassword:
Console.WriteLine("Invalid credentials");
break;
case ConnAckReasonCode.NotAuthorized:
Console.WriteLine("Not authorized to connect");
break;
default:
Console.WriteLine($"Connection failed: {connectResult.ReasonCode}");
break;
}
See Also
- Security Best Practices - Comprehensive security guide including SecureString usage
- Authentication with Username and Password - MQTT Security Fundamentals
- Advanced Authentication Mechanisms - MQTT Security Fundamentals
- HiveMQ Cloud - Authentication and Authorization
- Client Certificates - Certificate-based authentication