TsgcWSPClient_MQTTイベント › OnMQTTAuth

OnMQTTAuth イベント

MQTT 5 拡張認証交換において、ブローカーが AUTH パケットを送信するときに発生します。

構文

property OnMQTTAuth: TsgcWSMQTTAuthEvent;
// TsgcWSMQTTAuthEvent = procedure(Connection: TsgcWSConnection; ReasonCode: Integer; const ReasonName: String; AuthProperties: TsgcWSMQTTAUTHProperties) of object

デフォルト値

解説

MQTT 5 AUTH パケットの拡張(チャレンジ/レスポンス)認証交換中に使用されるハンドラー。一般的なフローは次のとおりです: クライアントが AuthenticationMethod と AuthenticationData を含む CONNECT を送信し、ブローカーがチャレンジを含む AUTH(ReasonCode = 認証の継続)で応答し、クライアントが別の AUTH で回答し、ブローカーが最終的に CONNACK を送信します。ハンドラーは Connection、ブローカーの ReasonCode(整数)、人間が読める ReasonName、および AuthenticationMethodAuthenticationDataReasonStringUserProperties を公開する AuthProperties を受け取ります。このイベントを使用してブローカーのチャレンジを読み取り、Auth メソッドを呼び出して交換の次のステップを投稿してください。MQTTVersion が 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;

イベントに戻る