Identica
Вход

Как выбирается провайдер

Причины, которые решают, какой провайдер обработает заходящего игрока, и роль имён хостов.

Для каждого входа собираются причины, по которым его должен обработать тот или иной провайдер, и побеждает самая сильная. Identica выбирает провайдера один раз, пока игрок подключается, и сохраняет выбор на весь вход.

Порядок причин

От самой сильной к самой слабой:

  1. Ожидающая миграция. Игрок подтвердил переход к другому провайдеру, поэтому настраивается новый провайдер. См. Переход между провайдерами.
  2. Аккаунт подтверждённого входа. Провайдер доказал, что клиент владеет своей идентичностью, например провайдер Premium после онлайн-входа, и эта идентичность уже принадлежит аккаунту. Существующий аккаунт сохраняет своего провайдера, поэтому имя хоста никогда не переносит аккаунт.
  3. Имя хоста. Игрок зашёл через одно из имён хостов провайдера. Вход через имя хоста — осознанный выбор.
  4. Подтверждённый вход без аккаунта. Провайдер доказал идентичность клиента, но аккаунта с ней ещё нет. Игрок регистрируется у этого провайдера, если имя хоста не выбрало другого.
  5. Выбор игрока. Игрок выбрал провайдера, когда его спросили. Выбор сохраняется, если игрок переподключится до конца регистрации.
  6. Совпадение ника. Аккаунт с ником игрока использует этого провайдера. Один только ник ничего не доказывает о клиенте.
  7. Обнаружение. Провайдер узнаёт ник, но без доказательства.

При равных по силе причинах побеждает провайдер с большим priority в providers/providers.yml. Победить могут только провайдеры, которые доступны этому входу: имя хоста провайдера, которого сценарий не предлагает, не учитывается, а провайдер, у которого вход игрока не удался, исключается до конца входа.

На практике

  • Новый игрок, который заходит через имя хоста провайдера, регистрируется у этого провайдера. Если choice регистрации — PROMPTED, игроку не предлагают выбрать провайдера, когда провайдер имени хоста есть среди предложенных; выбирать придётся только среди его способов, если их несколько.
  • Игрок, у подтверждённого входа которого уже есть аккаунт, сохраняет провайдера этого аккаунта, через какое бы имя хоста он ни зашёл. Аккаунт Premium остаётся у провайдера Premium и через имя хоста провайдера Credential.
  • У нового игрока имя хоста побеждает подтверждённый вход без аккаунта. Владелец лицензионного аккаунта, который заходит через имя хоста провайдера Credential в сети, где choice регистрации — AUTOMATIC, и у которого запрашивают лицензионный вход, потому что ник лицензионный, всё равно регистрируется у провайдера Credential, и при следующих входах у него запрашивают пароль Credential. Через имя хоста провайдера Premium тот же игрок регистрируется у провайдера Premium.
  • Если ник Steve занят аккаунтом Credential, настоящий владелец лицензионного аккаунта Steve, который заходит через имя хоста провайдера Premium, проходит лицензионный вход и попадает в свой собственный аккаунт Premium или регистрирует его. Без такого входа за провайдера говорит только совпадение ника, поэтому у игрока запрашивают пароль Credential. Что происходит с ником, решают правила для ников.

Имена хостов

entrypoints провайдера перечисляют имена хостов, которые выбирают его:

providers:
  - id: "premium"
    entrypoints:
      - "premium.example.com"
  - id: "credential"
    entrypoints:
      - "credential.example.com"

Запись без порта подходит для имени хоста на любом порту, host:port — только для этого порта. Если одно имя хоста указано у нескольких провайдеров, его получает провайдер с большим priority.

Имя хоста только выбирает провайдера. Оно никогда не направляет игрока на сервер — для этого есть forced hosts прокси и forcedHosts маршрутизации. И оно никогда не снимает защиту ника, которую даёт сам провайдер: Premium по-прежнему требует свой вход для лицензионного ника или аккаунта Premium, через какое бы имя хоста ни зашёл игрок.

Все настройки провайдеров описаны в providers/providers.yml.

На этой странице