MQTT.js icon indicating copy to clipboard operation
MQTT.js copied to clipboard

[feat] Add support for MQTT 5 refresh auth

Open robertsLando opened this issue 4 months ago • 0 comments

Specs: https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Re-authentication

Discussed in https://github.com/mqttjs/MQTT.js/discussions/1794

Originally posted by sseiber February 26, 2024 I'm using JWT Token authentication sucessfully by setting the mqtt client properties before connecting:

properties: {
    authenticationMethod: 'OAUTH2-JWT', // for Azure EventGrid
    authenticationData: <auth-token>
}

I need to be able to re-authenticate with the service when the token needs to be refreshed by sending an auth packet:

{
    cmd: 'auth',
    reasonCode: 0x19,
    properties: {
        authenticationMethod: 'OAUTH2-JWT',
        authenticationData: <auth-token>
    }
}

However, I don't see a way to send a specific packet. I'm following an example that uses MQTTnet to provide this functionality (see SendExtendedAuthenticationExchangeDataAsync): https://github.com/dotnet/MQTTnet/blob/f82d382f23ec8388ed8a33c48b7ede08e2c18622/Source/MQTTnet/Client/MqttClient.cs#L296

Is there a method or standard pattern in mqtt.js for doing this?

robertsLando avatar Feb 26 '24 08:02 robertsLando