TsgcWSPClient_MQTT › Olaylar › OnMQTTAuth
Broker bir AUTH paketi gönderdiğinde, MQTT 5 gelişmiş kimlik doğrulama alışverişi sırasında tetiklenir.
property OnMQTTAuth: TsgcWSMQTTAuthEvent;
// TsgcWSMQTTAuthEvent = procedure(Connection: TsgcWSConnection; ReasonCode: Integer; const ReasonName: String; AuthProperties: TsgcWSMQTTAUTHProperties) of object
—
Gelişmiş (challenge / response) kimlik doğrulama alışverişi sırasında kullanılan MQTT 5 AUTH paketi için işleyici. Tipik bir akış şöyledir: İstemci, AuthenticationMethod ve AuthenticationData ile CONNECT gönderir, broker challenge'ını taşıyan AUTH (ReasonCode = Continue authentication) ile yanıt verir, istemci başka bir AUTH ile yanıt verir ve broker sonunda CONNACK gönderir. İşleyici, Connection, broker ReasonCode (tamsayı) ve insan tarafından okunabilir ReasonName'i ve ayrıca AuthenticationMethod, AuthenticationData, ReasonString ve UserProperties öğelerini sunan AuthProperties'i alır. Broker challenge'ını okumak ve ardından alışverişin bir sonraki adımını göndermek için Auth yöntemini çağırmak için bu olayı kullanın. Yalnızca MQTTVersion 5.0 olduğunda kullanılabilir.
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;