Перейти к основному содержимому

Безопасность аккаунта

Все операции требуют X-Project-Context. Для настройки нужна пользовательская сессия; двухфакторное подтверждение входа выполняется до создания сессии.

PIN-защита​

documentIdАвторизацияПеременныеРезультат
togglePinShieldBearer sessionenable: Boolean!, pin: String!OperationResult!
recoverPinBearer sessionmethod: String!OperationResult!

togglePinShield включает или выключает дополнительную PIN-проверку денежных и других защищённых действий. recoverPin отправляет восстановление через подтверждённый канал пользователя.

Выбранный сервер​

changeServer принимает serverId: Int! и выбирает игровой сервер текущего проекта.

Методы 2FA​

ЗначениеНазначение
totpШестизначный код RFC 6238 из приложения-аутентификатора
emailОдноразовый код на подтверждённую почту
recovery_codeОдноразовый резервный код только для подтверждения входа

recovery_code нельзя включить как самостоятельный метод. Набор резервных кодов создаётся после включения первого метода 2FA.

Включение метода​

Включение состоит из двух операций: укажите текущий пароль, затем подтвердите код выбранного метода.

Запрос
documentId: beginTwoFactorEnrollment
{
"documentId": "beginTwoFactorEnrollment",
"variables": {
"method": "totp",
"currentPassword": "account-password"
}
}
Ответ
200 OK
{
"data": {
"beginTwoFactorEnrollment": {
"token": "opaque-challenge-token",
"availableMethods": [
"totp"
],
"expiresAt": "2026-07-19 12:10:00",
"provisioningUri": "otpauth://totp/...",
"manualKey": "BASE32SECRET"
}
}
}

После проверки кода вызовите confirmTwoFactorEnrollment:

documentId: confirmTwoFactorEnrollment
{
"documentId": "confirmTwoFactorEnrollment",
"variables": {
"challengeToken": "opaque-challenge-token",
"code": "123456"
}
}

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

Для email beginTwoFactorEnrollment сразу отправляет код на подтверждённый адрес. requestTwoFactorChallengeCode повторно отправляет код для действующего запроса с ограничением частоты.

Отключение метода​

ШагdocumentIdПеременные
1beginTwoFactorRemovalmethod, currentPassword
2confirmTwoFactorRemovalchallengeToken, code

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

Резервные коды​

documentIdНазначение
twoFactorRecoveryCodesCountЧисло неиспользованных кодов
beginTwoFactorRecoveryCodeReplacementПроверить пароль и начать замену
confirmTwoFactorRecoveryCodeReplacementПодтвердить действующим фактором и получить новый набор

Замена немедленно отменяет все старые коды. Каждый резервный код можно использовать для входа только один раз.

Завершение входа​

login, loginGameAccount, вход по ссылке и вход по коду возвращают twoFactorChallenge, если для аккаунта включена 2FA. Передайте поле token в verifyTwoFactorChallenge:

documentId: verifyTwoFactorChallenge
{
"documentId": "verifyTwoFactorChallenge",
"variables": {
"challengeToken": "opaque-challenge-token",
"method": "recovery_code",
"code": "ABCD-EFGH-IJKL"
}
}

Успешное подтверждение возвращает сессию. Если запрос истёк или исчерпан лимит попыток, начните вход заново.

Passkey​

Управление ключами​

documentIdАвторизацияНазначение
passkeyCredentialsBearer sessionСписок ключей Passkey текущего пользователя
passkeyRegOptionsBearer sessionПараметры создания ключа WebAuthn
passkeyRegisterBearer sessionПроверить attestation и сохранить ключ
deletePasskeyBearer sessionУдалить ключ по credentialId

passkeyRegister принимает attestation: JSON! и необязательное name: String. Результат имеет тип PasskeyCredential, а не OperationResult.

documentId: passkeyRegister
{
"documentId": "passkeyRegister",
"variables": {
"attestation": {},
"name": "Windows Hello"
}
}

Параметры одноразовые и используются в рамках одной процедуры WebAuthn. Для новой попытки получите новые параметры.

Вход через Passkey​

ШагdocumentIdАвторизация
1passkeyAuthOptionsНе требуется
2loginPasskeyНе требуется

loginPasskey принимает assertion: JSON! и необязательный utm: JSON. Успешная криптографическая проверка создаёт пользовательскую сессию.

Основные ошибки​

ОшибкаПричина
UNAUTHENTICATEDДля настройки отсутствует действующая сессия
INVALID_CREDENTIALSНеверный текущий пароль
TWO_FACTOR_INVALID_CODEКод неверный или уже использован
TWO_FACTOR_TOKEN_EXPIREDЗапрос истёк, исчерпал число попыток или уже завершён
TWO_FACTOR_METHOD_UNAVAILABLEМетод не включён или недоступен для текущего запроса
PASSKEY_INVALID_ASSERTIONWebAuthn assertion/attestation не прошёл проверку
PASSKEY_NOT_FOUNDКлюч не найден