TsgcWSPClient_MQTT › Événements › OnMQTTAuth
Se déclenche pendant l'échange d'authentification améliorée MQTT 5 lorsque le broker envoie un paquet AUTH.
property OnMQTTAuth: TsgcWSMQTTAuthEvent;
// TsgcWSMQTTAuthEvent = procedure(Connection: TsgcWSConnection; ReasonCode: Integer; const ReasonName: String; AuthProperties: TsgcWSMQTTAUTHProperties) of object
—
Gestionnaire du paquet AUTH MQTT 5 utilisé lors de l'échange d'authentification amélioré (défi/réponse). Un flux typique est : le client envoie CONNECT avec AuthenticationMethod et AuthenticationData, le broker répond avec AUTH (ReasonCode = Continue authentication) portant son défi, le client répond avec un autre AUTH, et le broker envoie finalement CONNACK. Le gestionnaire reçoit Connection, le ReasonCode du broker (entier) et le ReasonName lisible par l'humain, ainsi que AuthProperties qui expose AuthenticationMethod, AuthenticationData, ReasonString et UserProperties. Utilisez cet événement pour lire le défi du broker, puis appelez la méthode Auth pour envoyer la prochaine étape de l'échange. Disponible uniquement lorsque MQTTVersion est 5.0.
procedure TForm1.MQTTAuth(Connection: TsgcWSConnection;
ReasonCode: Integer; const ReasonName: String;
AuthProperties: TsgcWSMQTTAUTHProperties);
var
vMethod, vData: String;
begin
vMethod := AuthProperties.AuthenticationMethod;
vData := AuthProperties.AuthenticationData;
Memo1.Lines.Add(Format('AUTH %d (%s) method=%s',
[ReasonCode, ReasonName, vMethod]));
// continue the exchange with the next client step
if ReasonCode = 24 then // Continue authentication
MQTT.Auth(False, vMethod, ComputeClientResponse(vData));
end;