Синхронизация
Аутентификация по одноразовым паролям со счётчиком (counter-based OTP) подразумевает, что в устройстве имеется счётчик нажатий - положительное число, увеличивающееся каждый раз при нажатии на кнопку. Это же значение хранится внутри базы данных системы - оно "следует" за счётчиком устройства, увеличиваясь каждый раз после успешной аутентификации. Требуется, чтобы эти два счётчика были синхронизированы друг с другом; в противном случае система не сможет проверить одноразовый пароль.
В то же время, распространённой является ситуация, когда пользователь случайно нажимает на кнопку. Счётчик уходит вперёд, и одноразовый пароль оказывается пропущенным. Чтобы пользователь всё же имел возможность пройти аутентификацию, реализован следующий алгоритм: система "заглядывает вперёд" на несколько значений счётчика, проверяя не только текущий одноразовый пароль, но и несколько будущих.
Этот интервал принято называть окном аутентификации, или внутренним окном. По умолчанию значение внутреннего окна равно 10 одноразовым паролям.
В случае если количество ложных нажатий превысило внутреннее окно, у пользователя всё же остаётся возможность войти в систему. Для этого необходимо ещё раз сгенерировать одноразовый пароль и повторить попытку входа. Включается режим синхронизации, когда система "заглядывает вперёд" на большее количество паролей, но при этом проверяются два следующих подряд одноразовых пароля. Тот же алгоритм используется при присвоении токена, чтобы определить актуальное значение счётчика.
Этот интервал принято называть окном синхронизации, или внешним окном. По умолчанию значение внешнего окна равно 100 одноразовым паролям.
Размеры внутреннего и внешнего окон могут быть настроены через административный интерфейс (см. Настройки).
Примечание: в данной версии настройки внутреннего и внешнего окон являются общими для каждого Realm'а (подробнее о realm'ах см. Server Administration Guide, 1.3 Core Concepts and Terms). В будущих версиях планируется реализовать индивидуальные настройки для пользователей и токенов.