- web-soft-auth
- Class: web-soft-auth.Auth
- Class: web-soft-auth.LockoutManager
- Class: web-soft-auth.TwoFactorAuth
- Class: web-soft-auth.ation-windowMessageService
- Module: web-soft-auth.AuthModule
- Module: web-soft-auth.TwoFactorAuthModule
- Interface: web-soft-auth.MessageTransport
- web-soft-auth.messageService
- web-soft-auth.lockoutManager
- web-soft-auth.CODE_TIMEOUT
- web-soft-auth.OBSERVATION_WINDOW
- web-soft-auth.LOCKOUT_THRESHOLD
- web-soft-auth error codes
Модуль авторизации/аутентификации для использования совместно с пакетом web-soft-server. Используется авторизация/аутентификация на основе механизма сессий. За хранение сессий отвечает пакет web-soft-server. На данный момент доступно два модуля: простой модуль AuthModule и модуль с двухфакторной аутентификацией TwoFactorAuthModule.
Пример использования простого модуля AuthModule:
const { Server, logger } = require('web-soft-server');
const { AuthModule } = require('../index');
const modules = require('./modules');
let server = {};
const start = async () => {
try {
server = new Server({ host: '0.0.0.0', port: 8000, cors: false });
server.start({ ...modules, auth: AuthModule });
} catch (error) {
logger.fatal(error);
}
};
start();
Пример использования модуля с двухфакторной аутентификацией TwoFactorAuthModule. В данном случае необходимо передать объекту messageService объект транспорта, который должен реализовывать интерфейс MessageTransport, иначе при попытке отправки сообщения будет выбрасываться исключение:
const { Server, logger } = require('web-soft-server');
const { TwoFactorAuthModule, messageService } = require('../index');
const messageTransport = require('./message-transport.js');
const modules = require('./modules');
messageService.setTransport(messageTransport);
let server = {};
const start = async () => {
try {
server = new Server({ host: '0.0.0.0', port: 8000, cors: false });
server.start({ ...modules, auth: TwoFactorAuthModule });
} catch (error) {
logger.fatal(error);
}
};
start();
Предоставляет методы связанные с простой авторизацией/аутентификацией. Является базовым классом для класса TwoFactorAuth.
manager<LockoutManager> экземпляр класса LockoutManager, отвечающий за временную блокировку аккаунтов пользователей, совершивших неудачную попытку входа более LOCKOUT_THRESHOLD раз в течение OBSERVATION_WINDOW времени. Default: lockoutManager
data<object> объект с данными нового пользователя:context<Client> объект имплементирующий интерфейс Client для инициализации сессии пользователя, после успешной регистрации.- Returns: <Promise<object>>
Метод регистрации нового пользователя.
В целях безопасности, к паролю предъявляются следующие требования: минимальная длина - 12 символов, максимальная длина - 128 символов, все повторяющиеся подряд идущие пробельные символы заменяются одним пробельным символом, так же пароль не должен входить в список 1000 наиболее частых используемых паролей представленным тут.
data<object> объект с данными пользователя.context<Client> объект имплементирующий интерфейс Client для инициализации сессии пользователя, после успешной аутентификации.- Returns: <Promise<object>>
Метод аутентификации пользователя.
data<object> пустой объект, нужен исключительно для соблюдения контракта и передачи вторым аргументом объектаcontext.context<Client> объект имплементирующий интерфейс Client для удаления сессии пользователя.- Returns: <Promise<void>>
Метод деавторизации пользователя.
data<object> пустой объект, нужен исключительно для соблюдения контракта и передачи вторым аргументом объектаcontext.context<Client> объект имплементирующий интерфейс Client для получения информации о текущем пользователе.- Returns: <Promise<object>>
Метод для получения информации о текущем авторизованном пользователе.
data<object> объект с данными пользователя.context<Client> объект имплементирующий интерфейс Client для получения информации о текущем пользователе.- Returns: <Promise<object>>
Метод для смены пароля текущего авторизованного пользователя.
Отвечает за отслеживание неудачных попыток пользователей пройти аутентификацию и временную блокировку их учётных записей в случае превышения лимита попыток аутентификации.
Метод для проверки заблокирован ли аккаунт пользователя, если нет возвращает true, иначе выбрасывает исключение ACCOUNT_LOCKOUT_ERROR.
username<string> имя аккаунта пользователя.
Метод для регистрации неудачной попытки аутентификации пользователя. Если при регистрации неудачной попытки, аккаунт пользователя будет временно заблокирован, будет выброшено исключение ACCOUNT_LOCKOUT_ERROR.
Наследник класса Auth. Переопределяет метод регистрации, добавляет метод восстановления пароля. Не отвечает за отправку кодов, а лишь меняет реализацию базового класса, добавляя логику подтверждения с помощью кода, и предоставляет интерфейс для получения кода.
service<MessageService> экземпляр класса MessageService, отвечающий за генерацию кодов и отправку сообщений пользователям. Default: messageServicemanager<LockoutManager> экземпляр класса LockoutManager, отвечающий за временную блокировку аккаунтов пользователей, совершивших неудачную попытку входа более LOCKOUT_THRESHOLD раз в течение OBSERVATION_WINDOW времени. Default: lockoutManager
data<object> объект с данными нового пользователя:context<Client> объект имплементирующий интерфейс Client для инициализации сессии пользователя, после успешной регистрации.- Returns: <Promise<object>>
Метод регистрации нового пользователя с подверждением с помощью кода.
В целях безопасности, к паролю предъявляются следующие требования: минимальная длина - 12 символов, максимальная длина - 128 символов, все повторяющиеся подряд идущие пробельные символы заменяются одним пробельным символом, так же пароль не должен входить в список 1000 наиболее частых используемых паролей представленным тут.
Метод для восстановления доступа пользователя к системе путём смены пароля. Владение аккаунтом подтверждается через уникальный код, отправленный реализованным приложением способом. В случае успеха, возвращает имя аккаунта пользвателя.
data<object> объект с информацией об отправке:destination<string> адрес отправки кода, может быть номером телефона, адресом почты и т.д.
- Returns: <Promise<string>>
Метод для отправки кода по указанному адресу. Возвращает параметр destination в случае успешной отправки.
Отвечает за отправку и сообщейний с кодом и валидацию полученных кодов. В целях переиспользования кода класс не отвечает непосредственно за доставку сообщений, поэтому для полноценной работы классу необходимо передать объект транспорта, реализующий интерфейс MessageTransport.
transport<MessageTransport> объект, отвечающий за доставку сообщений пользователю по указанному адресу.
Метод для установки транспорта сообщений, созданному экземпляру класса.
timeout<number> время, спустя которое код, отправленный в сообщении, станет недействительным.
destination<string> адрес отправки кода, может быть номером телефона, адресом почты и т.д.- Returns: <Promise<string>>
Метод для отправки кода по указанному адресу. Возвращает параметр destination в случае успешной отправки.
destination<string> адрес отправки кода, может быть номером телефона, адресом почты и т.д.- Returns: <boolean>
Метод проверяет наличие уже отправленного кода по указанному адресу назначения. Если код уже отправлен и всё ещё действителен, выбрасывается исключение CODE_EXISTS_ERROR, иначе возвращает true.
Метод возвращает отправленный код для указанного адреса назначения. Если код для указанного адреса не найден, будет выбрашено исключение CODE_NOT_FOUND_ERROR.
destination<string> адрес, для которого нужно удалить код.
Метод удаляет код для указанного адреса.
ВАЖНО: Так как коды храняться в оперативной памяти, необходимо вызывать функцию удаления после подтверждения кода.
Модуль простой авторизации/аутентификации для пакета web-soft-server.
Модуль с двухфакторной аутентификацией для пакета web-soft-server.
Интерфейс объекта, отвечающего за доставку сообщения пользователю.
Метод отправляет сообщение с кодом адресату. Выбрасывает исключение, в случае неудачной отправки.
Глобальный экземпляр класса MessageService, используемый по умолчанию классом TwoFactorAuth.
Глобальный экземпляр класса LockoutManager, используемый по умолчанию классом Auth.
- <number> время жизни кода после отправки пользователю, 300000 мс.
- <number> период времени, в течение которого должны произойти неудачные попытки аутентификации для блокировки аккаунта пользователя, 300000 мс.
- <number> количество неудачных попыток аутентификации для блокировки аккаунта пользователя, 3.
Коды ошибок, использованные в пакете web-soft-auth.