Безопасность аккаунта
Все операции требуют X-Project-Context. Для настройки нужна пользовательская сессия; двухфакторное подтверждение входа выполняется до создания сессии.
PIN-защита
documentId | Авторизация | Переменные | Результат |
|---|---|---|---|
togglePinShield | Bearer session | enable: Boolean!, pin: String! | OperationResult! |
recoverPin | Bearer session | method: String! | OperationResult! |
togglePinShield включает или выключает дополнительную PIN-проверку денежных и других защищённых действий. recoverPin отправляет восстановление через подтверждённый канал пользователя.
Выбранный сервер
changeServer принимает serverId: Int! и выбирает игровой сервер текущего проекта.
Методы 2FA
| Значение | Назначение |
|---|---|
totp | Шестизначный код RFC 6238 из приложения-аутентификатора |
email | Одноразовый код на подтверждённую почту |
recovery_code | Одноразовый резервный код только для подтверждения входа |
recovery_code нельзя включить как самостоятельный метод. Набор резервных кодов создаётся после включения первого метода 2FA.
Включение метода
Включение состоит из двух операций: укажите текущий пароль, затем подтвердите код выбранного метода.
{
"documentId": "beginTwoFactorEnrollment",
"variables": {
"method": "totp",
"currentPassword": "account-password"
}
}
{
"data": {
"beginTwoFactorEnrollment": {
"token": "opaque-challenge-token",
"availableMethods": [
"totp"
],
"expiresAt": "2026-07-19 12:10:00",
"provisioningUri": "otpauth://totp/...",
"manualKey": "BASE32SECRET"
}
}
}
После проверки кода вызовите confirmTwoFactorEnrollment:
{
"documentId": "confirmTwoFactorEnrollment",
"variables": {
"challengeToken": "opaque-challenge-token",
"code": "123456"
}
}
Ответ содержит новый набор резервных кодов только при включении первого метода. Коды показываются один раз: предложите пользователю сохранить их.
Для email beginTwoFactorEnrollment сразу отправляет код на подтверждённый адрес. requestTwoFactorChallengeCode повторно отправляет код для действующего запроса с ограничением частоты.
Отключение метода
| Шаг | documentId | Переменные |
|---|---|---|
| 1 | beginTwoFactorRemoval | method, currentPassword |
| 2 | confirmTwoFactorRemoval | challengeToken, code |
После отключения последнего метода резервные коды и незавершённые запросы подтверждения больше не действуют.
Резервные коды
documentId | Назначение |
|---|---|
twoFactorRecoveryCodesCount | Число неиспользованных кодов |
beginTwoFactorRecoveryCodeReplacement | Проверить пароль и начать замену |
confirmTwoFactorRecoveryCodeReplacement | Подтвердить действующим фактором и получить новый набор |
Замена немедленно отменяет все старые коды. Каждый резервный код можно использовать для входа только один раз.
Завершение входа
login, loginGameAccount, вход по ссылке и вход по коду возвращают twoFactorChallenge, если для аккаунта включена 2FA. Передайте поле token в verifyTwoFactorChallenge:
{
"documentId": "verifyTwoFactorChallenge",
"variables": {
"challengeToken": "opaque-challenge-token",
"method": "recovery_code",
"code": "ABCD-EFGH-IJKL"
}
}
Успешное подтверждение возвращает сессию. Если запрос истёк или исчерпан лимит попыток, начните вход заново.
Passkey
Управление ключами
documentId | Авторизация | Назначение |
|---|---|---|
passkeyCredentials | Bearer session | Список ключей Passkey текущего пользователя |
passkeyRegOptions | Bearer session | Параметры создания ключа WebAuthn |
passkeyRegister | Bearer session | Проверить attestation и сохранить ключ |
deletePasskey | Bearer session | Удалить ключ по credentialId |
passkeyRegister принимает attestation: JSON! и необязательное name: String. Результат имеет тип PasskeyCredential, а не OperationResult.
{
"documentId": "passkeyRegister",
"variables": {
"attestation": {},
"name": "Windows Hello"
}
}
Параметры одноразовые и используются в рамках одной процедуры WebAuthn. Для новой попытки получите новые параметры.
Вход через Passkey
| Шаг | documentId | Авторизация |
|---|---|---|
| 1 | passkeyAuthOptions | Не требуется |
| 2 | loginPasskey | Не требуется |
loginPasskey принимает assertion: JSON! и необязательный utm: JSON. Успешная криптографическая проверка создаёт пользовательскую сессию.
Основные ошибки
| Ошибка | Причина |
|---|---|
UNAUTHENTICATED | Для настройки отсутствует действующая сессия |
INVALID_CREDENTIALS | Неверный текущий пароль |
TWO_FACTOR_INVALID_CODE | Код неверный или уже использован |
TWO_FACTOR_TOKEN_EXPIRED | Запрос истёк, исчерпал число попыток или уже завершён |
TWO_FACTOR_METHOD_UNAVAILABLE | Метод не включён или недоступен для текущего запроса |
PASSKEY_INVALID_ASSERTION | WebAuthn assertion/attestation не прошёл проверку |
PASSKEY_NOT_FOUND | Ключ не найден |