Identica
ОфициальныеPremium

Определение лицензионных аккаунтов

Как Premium решает, кто владеет лицензионным аккаунтом, и как избавить офлайн-игроков от неудачного входа.

Игрока, которого Premium считает владельцем лицензионного аккаунта с его ником, просят войти через лицензионный аккаунт: сразу при подключении, если провайдера выбирает Identica, или когда он выбирает Premium, если choice регистрации — PROMPTED; тогда Premium предлагается только таким игрокам. Все остальные игроки переходят к следующему провайдеру, например Credential.

Ники, уже привязанные к аккаунту, подчиняются этому аккаунту: ник, привязанный к Premium, всегда требует входа через лицензионный аккаунт, а ник, привязанный к другому провайдеру, — никогда. Для остальных решает определение.

Методы

detection.methods в providers/Premium/settings.yml перечисляет методы, которые Premium пробует сверху вниз. Метод либо принимает решение, либо передаёт игрока следующему методу. Игрок, о котором не принял решения ни один метод, считается нелицензионным.

detection:
  methods:
    - CLIENT_PROFILE
    - LOOKUP
  • LOOKUP считает лицензионным каждый ник, у которого есть лицензионный профиль в Mojang. Этот метод всегда принимает решение, поэтому методы после него никогда не проверяются; в таком случае Premium пишет предупреждение при запуске.
  • CLIENT_PROFILE Экспериментально сравнивает идентификатор профиля, который клиент отправляет при подключении, с лицензионным профилем его ника. Официальный лаунчер отправляет идентификатор аккаунта, в который он вошёл, а пиратские (офлайн) лаунчеры — другой. Совпадение означает лицензионного игрока, другой идентификатор — нелицензионного. Клиенты старше 1.19.1 не отправляют идентификатор и передаются следующему методу.
methodsКлиент 1.19.1 или новееБолее старый клиент
["LOOKUP"] (по умолчанию)ник лицензионного аккаунта: просят войти через лицензионный аккаунтто же
["CLIENT_PROFILE", "LOOKUP"]просят войти через лицензионный аккаунт, только если клиент отправляет лицензионный профильник лицензионного аккаунта: просят войти через лицензионный аккаунт
["CLIENT_PROFILE"]просят войти через лицензионный аккаунт, только если клиент отправляет лицензионный профильсчитается нелицензионным

Офлайн-игроки с ником лицензионного аккаунта

Если указан только LOOKUP, офлайн-игрока с ником лицензионного аккаунта при первом входе просят войти через лицензионный аккаунт. Его клиент не может этого сделать и отключается с сообщением о недействительной сессии; следующий вход с того же адреса в течение attemptTtl переходит к следующему провайдеру, если только ник за это время не привязали к Premium.

Если CLIENT_PROFILE стоит первым, такой игрок переходит к следующему провайдеру уже при первом входе, а регистрация, в которой выбирает игрок, не предлагает ему Premium.

CLIENT_PROFILE также защищает ники, привязанные к Premium: клиенту, который отправляет идентификатор профиля, отличный от привязанного, отказывают во входе с сообщением verification.ownedUsername из messages.yml провайдера Premium — если только ник теперь не принадлежит профилю, который отправил этот клиент.

Клиент отправляет идентификатор профиля сам, поэтому CLIENT_PROFILE решает только одно: просить ли вход через лицензионный аккаунт. Сам вход через лицензионный аккаунт по-прежнему проверяется через Mojang.

На BungeeCord Identica читает идентификатор профиля из запроса на вход BungeeCord. В сборке BungeeCord, которая его не сохраняет, каждый клиент считается клиентом старше 1.19.1.

Ники, перешедшие к другому аккаунту

Результаты поиска кэшируются на lookup.cacheTtl, по умолчанию на пять минут. Ник, который за это время перешёл к другому лицензионному аккаунту, может сравниваться со старым профилем. recheckOnMismatch: true повторно ищет несовпавший ник, прежде чем признать игрока нелицензионным, ценой одного дополнительного запроса для каждого офлайн-игрока с ником лицензионного аккаунта.

Когда Mojang недоступен

Если поиск завершился ошибкой или длился дольше lookup.timeout (по умолчанию три секунды), считается, что у ника нет лицензионного профиля, и такой ответ не кэшируется. Игроки с никами лицензионных аккаунтов тогда переходят к следующему провайдеру, пока Mojang снова не начнёт отвечать; аккаунтам, уже привязанным к Premium, вход через лицензионный аккаунт по-прежнему нужен.

Все настройки описаны на странице Настройки.

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