Настройка AuthProvider

Способ accept
Только для ознакомления

Принимает любые пары логин-пароль

"auth": [
  {
    "provider": {
      "type": "accept"
    }
  }
]

Способ reject
Это просто

Отклоняет любые пары логин-пароль

"auth": [
  {
    "provider": {
      "type": "reject",
      "message": "Ведутся технические работы, приходите позже" // cообщение при авторизации
    }
  }
]

Способ mysql
Это просто

Для проверки логина и пароля лаунчсервер обращается к базе данных mysql
Этот способ НЕ подходит для сайтов с нестандартными алгоритмами хеширования

В базе данных создайте поле permissions типа BIGINT(значение по умолчанию 0)

"auth": [
  {
    "provider": {
      "type": "mysql",
      "mySQLHolder": {
        "address": "localhost",               // адрес mysql сервера
        "port": 3306,                         // порт mysql сервера
        "username": "launchserver",           // имя пользователя
        "password": "password",               // пароль пользователя
        "database": "db",                     // база данных, при проблемах с timezone используйте "database": "db?serverTimezone=UTC"
        "timezone": "UTC"                     // установка клиентской таймзоны
      },
      "query": "SELECT login, permission FROM users WHERE login=? AND password=MD5(?) LIMIT 1", // sql запрос
      "queryParams": [ "%login%", "%password%" ],                                               // параметры sql запроса
      "usePermission": true,
      "message": "Пароль неверный!"                                                             // сообщение при неверном пароле
    }
  }
]

Способ postgresql
Средний уровень

Для проверки логина и пароля лаунчсервер обращается к базе данных postgresql
Этот способ НЕ подходит для сайтов с нестандартными алгоритмами хеширования

В базе данных создайте поле permissions типа bigint(значение по умолчанию 0)

"auth": [
  {
    "provider": {
      "type": "postgresql",
      "postgreSQLHolder": {
        "address": "localhost",               // адрес postgresql сервера
        "port": 3306,                         // порт postgresql сервера
        "username": "launchserver",           // имя пользователя
        "password": "password",               // пароль пользователя
        "database": "db",                     // база данных, при проблемах с timezone используйте "database": "db?serverTimezone=UTC" (?)
        "timezone": "UTC"                     // установка клиентской таймзоны
      },
      "query": "SELECT login, permission FROM users WHERE login=? AND password=MD5(?) LIMIT 1", // sql запрос
      "queryParams": [ "%login%", "%password%" ],                                               // параметры sql запроса
      "usePermission": true,
      "message": "Пароль неверный!"                                                             // сообщение при неверном пароле
    }
  }
]

Способ request
Это просто

Для проверки логина и пароля лаунчсервер обращается к сайту по протоколу HTTP/HTTPS

Ответ сервера должен выглядеть так: OK:Gravit:0, где Gravit - ваш никнейм, 0 - маска permissions

"auth": [
  {
    "provider": {
      "type": "request",
      "usePermission": true,
      "url": "http://gravit.pro/auth.php?username=%login%&password=%password%&ip=%ip%",
      "response": "OK:(?<username>.+):(?<permissions>.+)"
    }
  }
]

Некоторые скрипты авторизации не поддерживают передачу permissions и их ответ выглядит как OK:Gravit, где Gravit - ваш никнейм
Вы можете использовать конфигурацию ниже на версиях до 5.1.0, однако рекомендуется найти/написать/подправить скрипт, что бы он передавал permissions

"auth": [
  {
    "provider": {
      "type": "request",
      "url": "http://gravit.pro/auth.php?username=%login%&password=%password%&ip=%ip%", // ссылка до скрипта проверки логина-пароля
      "response": "OK:(?<username>.+)" // маска ответа, если не соответствует, будет выведено сообщение с возвращенным текстом
    }
  }
]

Способ json
Средний уровень

Для проверки логина и пароля лаунчсервер обращается к сайту по протоколу HTTP/HTTPS, но в отличии от request делает POST запрос с json данными внутри

"auth": [
  {
    "provider": {
      "type": "json",
      "url": "http://gravit.pro/auth.php", // ссылка до скрипта проверки логина-пароля
      "apiKey": "none"                     // секретный ключ, который может проверятся в скрипте, для безопасности
    }
  }
]
Запрос:

{
  "username": "admin",
  "password": "password",
  "ip": "127.0.0.1",
  "apiKey": "none"
}

Ответ:

{
  "username": "admin",
  "permissions": 0
}

Ошибка:

{
  "error": "Неверный логин или пароль"
}

Способ hibernate
Средний уровень

Hibernate — самая популярная реализация спецификации JPA, предназначенная для решения задач объектно-реляционного отображения (ORM)
Для проверки логина и пароля лаунчсервер обращается к любой базе данных
Для подключения к базам данных, в libraries необходимо положить библиотеку для поддержки соответствующей базы данных
Инструкция по настройке Hibernate

"auth": [
  {
    "provider": {
      "type": "hibernate"
    }
  }
]

Permissions. Маска
Средний уровень

Маска permissions представляет собой обычное 64-битное число(long в Java/BIGINT в mySQL), каждый бит которого отвечает за определенную привилегию.
Что бы получить право ADMIN+SERVER вы должны сложить(выполнить побитовое ИЛИ если точнее, в простых случаях эквивалентно сложению) числа, соответствующие правам ADMIN и SERVER

Проверка в лаунчере выполняется путем выполнения побитового И, например если для опционального мода требуется право 9(canUSR2+canAdmin) то подойдут 9, 11, 13, 15 и тд