Перейти к содержанию

Авторизация

Управление доступными способами входа на форме авторизации определяет пользовательский ключ AuthConfig.

По умолчанию ключ отображается пустым: {"AuthTypes":[]}

Пример значения:

{"AuthTypes": [{"Type": "phone-code", "IsDefault": true, "AllowRegister": true,  "AutoRegister": true, "PrivacyLink": null, "HideProviders": true, "Visibility": "all", "RegisterPrivacyLink": null, "RegistrationType": "email"}, { "Type": "email-code", "IsDefault": false, "AllowRegister": false, "AutoRegister": true, "PrivacyLink": null, "HideProviders": true, "Visibility": "mobile", "RegisterPrivacyLink": null, "RegistrationType": "email"}, {"Type": "login-pass", "IsDefault": true, "AllowRegister": true, "AutoRegister": false, "PrivacyLink": null, "HideProviders": false, "Visibility": "web", "RegisterPrivacyLink": null, "RegistrationType": "phone"}]}
где: -Type --- Тип авторизации. Возможные значения: login-pass — вход по логину и паролю, phone-code — вход по номеру телефона, email-code — вход по почте, external-provider — приоритетный вход через внешнего провайдера (например, KeyCloak). При выборе этого типа отображается отдельный экран с кнопками внешних провайдеров без формы логина и пароля. -IsDefault — Тип авторизации по умолчанию. При входе в систему пользователь увидит тип авторизации, для которого параметр isDefault указан в значении true. Если типов по умолчанию указано больше одного, на форме появится кнопка переключения входа на другой способ. -AllowRegister — Разрешить регистрацию по указанному типу. Если параметр принимает значение true, то при открытии способа входа на форме будет доступна кнопка регистрации. -AutoRegister — Автоматическая регистрация. При значении true учётная запись создаётся автоматически при первом входе пользователя. Работает совместно с параметром AllowRegister: оба должны быть включены для полного сценария самостоятельной регистрации.

-PrivacyLink — Ссылка на пользовательское соглашение, которое запрашивается при входе. Указывается в двойных кавычках. Если параметр не пустой, на экране отображается обязательная опция "Я принимаю условия пользовательского соглашения" с указанной ссылкой. Пользовательское соглашение, которое запрашивается при регистрации, задается в параметре RegisterPrivacyLink. -HideProviders — Скрыть провайдеры. Если параметр принимает значение true, то при открытии способа входа или регистрации выбор провайдера будет недоступен. -Visibility — Возможность отображать данный тип авторизации для всех устройств (значение по умолчанию), только для веб-версии или только для мобильной версии. Возможные значения: all, mobile, web. -RegisterPrivacyLink — Пользовательское соглашение, которое запрашивается при регистрации. Принимает массив из двух параметров: olinkUrl — Ссылка на пользовательское соглашение. Указывается в двойных кавычках. olinkTitle — Текст пользовательского соглашения. Если текст не задан, по умолчанию используется "Я принимаю условия пользовательского соглашения". При необходимости может быть задано множество ссылок. Пример шаблона:

"RegisterPrivacyLink": [
    {
    "linkUrl": "https://{URL}",
    "linkTitle": "Ссылка 1"
    },
    {
    "linkUrl": "https://{URL}",
    "linkTitle": "Ссылка 2"
    },
    {
    "linkUrl": "https://{URL}",
    "linkTitle": "Ссылка 3"
    }
]
Если параметр не пустой, на экране отображается обязательная опция с заданным текстом и с указанной ссылкой. Пользовательское соглашение, которое запрашивается при входе, задается в параметре PrivacyLink. -RegistrationType — Тип регистрации. Доступные значения: all (и телефон, и почта), phone (только телефон), email (только почта). Если ключ не задан, будет доступна возможность использовать и телефон, и почта.

ℹ️ Параметры в AuthTypes обязательно должны быть указаны с заглавной буквы

Настройка имеет в системе больший приоритет для отображения кнопки регистрации. Если в ключе регистрация отключена, она не будет доступна даже при активной опции Разрешена регистрация, вход по номеру телефона в общих настройках приложения.

Вход по почте

Пользователь вводит адрес почты, который указан у него в профиле и нажимает кнопку Далее. На указанный адрес поступит 4-значный код, который необходимо будет ввести в системе. Если код введен корректно будет совершен вход в систему.

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

Вход по номеру

Пользователь вводит номер телефона, нажимает кнопку Далее. На указанный номер поступит 4-значный код, который необходимо будет ввести в системе. Если код введен корректно будет совершен вход в систему.

ℹ️ Для корректного входа по номеру должен быть настроен SMS провайдер

Приоритетный вход через внешнего провайдера

Если в AuthConfig указан тип external-provider с параметром IsDefault в значении true, на странице входа первым отображается экран с кнопками настроенных внешних провайдеров аутентификации. Форма логина и пароля, капча и выбор провайдера на этом экране не показываются.

Внизу экрана отображается ссылка «Войти по логину и паролю». По клику на неё открывается стандартная форма входа по логину и паролю с кнопкой «Назад» для возврата к экрану внешних провайдеров.

Если в массиве AuthTypes присутствует только external-provider без login-pass, ссылка «Войти по логину и паролю» не отображается.

Если AuthConfig не задан или в массиве AuthTypes отсутствует тип external-provider, поведение страницы входа не меняется.

Пример конфигурации:

{"AuthTypes": [{"Type": "external-provider", "IsDefault": true, "AllowRegister": false, "AutoRegister": false, "PrivacyLink": null, "RegisterPrivacyLink": null, "HideProviders": false, "Visibility": "all", "RegistrationType": "all"}, {"Type": "login-pass", "IsDefault": false, "AllowRegister": false, "AutoRegister": false, "PrivacyLink": null, "RegisterPrivacyLink": null, "HideProviders": false, "Visibility": "all", "RegistrationType": "all"}]}

Время жизни кода подтверждения

В системе авторизации реализовано ограничение по времени жизни кода подтверждения. Код регистрации действует в течение заданного в настройках периода, который по умолчанию составляет 24 часа. Это ограничение применяется ко всем кодам в системе, включая как коды регистрации, так и коды аутентификации. При попытке использования кода с истекшим сроком действия система возвращает ошибку "Неверный код". Время жизни кода настраивается в конфигурационном файле приложения appsettings.json в параметре AuthLoginCodeExpiresInMinutes.

Возможные ошибки при входе в систему

Вы превысили лимит попыток входа и Ваша учетная запись была заблокирована. Обратитесь к администратору

Данная ошибка на форме авторизации может возникнуть из-за работы механизма блокировки при множественных попытках входа. Проблема связана с тем, что все запросы от разных пользователей, проходящие через балансировщик нагрузки (load balancer), воспринимаются как действия с одного IP-адреса, что может привести к быстрому заполнению служебной таблицы iplist и массовой блокировке доступа. Механизм блокировки должен срабатывать индивидуально только в случае превышения лимита попыток входа с конкретного адреса.

Для решения этой проблемы балансировщик нагрузки должен передавать реальные IP-адреса каждого пользователя в специальных заголовках (X-Real-IP, X-Forwarded-Proto). В конфигурационном файле appsettings.json для этого обязательно должно быть настроено чтение этих заголовков:

"ForwardHeaders": {
  "Headers": "For,Proto,Host,Prefix",
  "Networks": "*",
  "Proxies": "*"
}