Customizing the FIX logon process in a QuickFIX acceptor

I'm using QuickFIX and C# to create a FIX acceptor (server). I want the client (the FIX initiator) to logon using a username and password. However, I'm not sure how I can do that in QuickFIX.

By debugging into the QuickFIX source code I have discovered the following sequence of events:

  • QuickFIX will call Session::verify to verify the logon.
  • Session::verify will perform various checks of things like comp ID's and sequence numbers and at some point determine that the logon received is valid.
  • Session::verify will then call the Application::fromAdmin callback which I assume is the natural place to customize things like logon.
  • However, at this point the logon has already been determined to be OK by QuickFIX and a corresponding logon message will be returned by the acceptor when the callback returns.

How do I customize the FIX logon process in an acceptor? Is modifying the QuickFIX code my only option?

7
задан DumbCoder 27 August 2010 в 09:36
поделиться

2 ответа

Если вы используете FIX 4.3 или более позднюю версию, сообщение Вход ​​может содержать тег Пароль. Если вы используете предыдущую версию, сделайте ее настраиваемым тегом и добавьте в словари.

В обработчике fromAdmin проверьте правильность пароля (из таблицы поиска или откуда-то еще). Если это не так, создайте исключение RejectLogon . Если это исключение не сгенерировано, QuickFix будет считать, что все в порядке, и зарегистрирует пользователя.

Пример (требуется дополнительная проверка работоспособности):

public void fromAdmin(Message message, SessionID id)
{
   var logon = message as QuickFix44.Logon;

   if (logon != null)
   {
      string userName = logon.getUserName().getValue();
      string expectedPassword = PasswordsByUser[userName];

      string suppliedPassword = logon.getPassword().getValue();

      if(expectedPassword != suppliedPassword)
          throw new RejectLogon();
   }     
}
6
ответ дан 7 December 2019 в 05:15
поделиться

fromAdmin уведомляет вас, когда административное сообщение отправляется от контрагента на ваш механизм FIX. Это может быть полезно для дополнительной проверки сообщений о входе в систему, например для проверки паролей. Создание исключения RejectLogon приведет к отключению контрагента.

Проверка сеанса обычно проверяет начальную строку FIX, SenderCompID и целевой CompID. Если эти 3 в порядке, тогда сессия настроена (QuickFIXJ имеет другие поля также для идентификаторов субкомпьютеров).

Даже после того, как сеанс был настроен, сообщения не будут приниматься получателем для этого конкретного сеанса, пока не будет завершен процесс входа в систему. Вы получите отказ, если попытаетесь это сделать.

Таким образом, в fromAdmin вы можете проверить входящий запрос на вход в систему и проверить действительный пароль, содержащийся в сообщении о входе в систему, который вы ожидаете для этого подключения/сеанса.

1
ответ дан 7 December 2019 в 05:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: