TsgcWSPClient_MQTT › Ereignisse › OnMQTTAuth
Wird während des MQTT-5-Enhanced-Authentication-Austauschs ausgelöst, wenn der Broker ein AUTH-Paket sendet.
property OnMQTTAuth: TsgcWSMQTTAuthEvent;
// TsgcWSMQTTAuthEvent = procedure(Connection: TsgcWSConnection; ReasonCode: Integer; const ReasonName: String; AuthProperties: TsgcWSMQTTAUTHProperties) of object
—
Handler für das MQTT-5-AUTH-Paket, das während des erweiterten (Challenge/Response) Authentifizierungsaustauschs verwendet wird. Ein typischer Ablauf ist: Der Client sendet CONNECT mit AuthenticationMethod und AuthenticationData, der Broker antwortet mit AUTH (ReasonCode = Continue authentication) und trägt seine Challenge, der Client antwortet mit einem weiteren AUTH, und der Broker sendet schließlich CONNACK. Der Handler empfängt Connection, den Broker-ReasonCode (Integer) und den menschenlesbaren ReasonName, sowie AuthProperties, das AuthenticationMethod, AuthenticationData, ReasonString und UserProperties bereitstellt. Verwenden Sie dieses Ereignis, um die Broker-Challenge zu lesen, und rufen Sie dann die Methode Auth auf, um den nächsten Schritt des Austauschs zu senden. Nur verfügbar, wenn MQTTVersion 5.0 ist.
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;