Настройки авторизации и безопасности¶
Параметры конфигурации приложения, файл deploy.json
¶
Параметры конфигурации приложения предназначены для определения ключевых возможностей системы при работе приложения на этапе проектирования и изменения параметров по умолчанию.
Настройка параметров авторизации при работе с паролем¶
Параметры и требования работы с паролем задаются в di
в конфигурации компонента auth
модуля.
Но в основном настройки задаются глобально.
{
"globals": {
"parametrised": true,
"plugins":{
"auth": {
"module": "lib/auth",
"initMethod": "init",
"initLevel": 2,
"options": {
"app": "ion://application",
"logger": "ion://sysLog",
"dataSource": "ion://Db",
"acl": "ion://aclProvider",
"passwordLifetime": "[[auth.passwordLifeTime]]", // Максимальный срок действия пароля
"passwordMinPeriod": "[[auth.passwordMinPeriod]]", // Минимальный срок действия пароля
"passwordMinLength": "[[auth.passwordMinLength]]", // Минимальная длина пароля
"passwordComplexity": { // Требования к сложности пароля
"upperLower": true, // Обязательно верхний и нижний регистр
"number": true, // Обязрательно использование хотя бы одного числа
"special": true // Обязательно использование хотя бы одного специального символа
},
"passwordJournalSize": "[[auth.passwordJournalSize]]", // Вести журнал паролей размере паролей
"tempBlockInterval": "[[auth.tempBlockInterval]]", // Время до сброса счетчика блокировки
"attemptLimit": "[[auth.attemptLimit]]", // Пороговое значение количества попыток для блокировки
"tempBlockPeriod": "[[auth.tempBlockPeriod]]" // Продолжительность блокировки учетной записи
}
}
При этом значения обозначенные [[auth.passwordLifeTime]]
могут быть переконфигурированы в файле настроек приложения /config/setup.ini
.
Но для этого обязательно нужно проверить, что задана настройка «parametrised»: true, на уровне global.
Время жизни задается в формает [длительность][ед. изм]
, при этом единицы измерения:
- y - год
- d - день
- h - час
- m - минута
- s - секунда
По умолчанию значения ключевых параметров:
- passwordLifetime = 100y
- passwordMinPeriod = 0d
- passwordMinLength = 8
Все создаваемые пароли в системе, в том числе импортированные, автоматически проставляются как требуемые к смене.
Чтобы при импорте пароли не требовалось менять, в свойствах пользователя в импортируемом файле acl должен быть указан параметр needPwdReset: false
Настройка минимальной длины пароля для входа в систему¶
Для указания минимальной длины пароля для входа в систему используем свойство "passwordMinLength"
"plugins":{
"accounts": {
"options": {
"passwordMinLength": 8
}
}
}
Настройка прав доступа «aclProvider»¶
"plugins":{
"aclProvider": {
"module": "core/impl/access/aclMetaMap",
"initMethod": "init",
"initLevel": 1,
"options":{
"dataRepo": "lazy://dataRepo",
"acl": "lazy://actualAclProvider",
"accessManager": "lazy://roleAccessManager"
}
}
Параметры настроек фреймворка и приложения в файле config/setup.ini
¶
Настройки предназначены для уточнения и изменения параметров приложения и инициализируются при запуске. Настройки имеют более высокий приоритет, чем параметры конфигурации.
Настройки приложения могут быть также заданы в переменных окружения; при этом переменные окружения имеют более высокий приоритет перед настройками.
Переопределение параметров конфигурации паролей¶
Параметры работы с паролями, заданные в deploy.json
проекта, если включена параметризация и указан код параметр, можно переопределить через настройки платформы или через переменные окружения.
Пример файла настроек /config/setup.ini
, в котором переопределяются значения, указанные в примере файла deploy.json
.
# Максимальный срок действия пароля
auth.passwordLifeTime=90d
# Минимальный срок действия пароля
auth.passwordMinPeriod=75d
# Минимальная длина пароля
auth.passwordMinLength=8
# Вести журнал паролей размере паролей
auth.passwordJournalSize=5
# Время до сброса счетчика блокировки
auth.tempBlockInterval=30m
# Пороговое значение блокировки
auth.attemptLimit=6
# Продолжительность блокировки учетной записи
auth.tempBlockPeriod=30m
# Время жизни авторизованной сессии, при отсутствии активности
auth.sessionLifeTime=4h
Настройка параметров сессии в системе¶
Длина сессии задается в config/config.json в sessionHandler
, с применением плейсхолдеров для параметра cookie.maxAge
:
"sessionHandler": {
"module": "lib/session",
"initMethod": "init",
"initLevel": 1,
"options": {
"app": "ion://application",
"dataSource": "ion://Db",
"session": {
"secret": "ion:demo:secret",
"resave": false,
"saveUninitialized": true,
"cookie": {
"httpOnly": true,
"secure": false,
"maxAge": "[[auth.sessionLifeTime]]"
}
}
}
}
Добавляем настройку в deploy.ini-файл проекта. Формат задания аналогичен настройкам периодов в auth
:
auth.tempBlockPeriod=2s
auth.tempBlockInterval=15m
auth.blockPeriod=1d
auth.sessionLifeTime=2h
Также можно задавать просто числом, тогда это будет задание в миллисекундах.
Для хранения сессии не в базе данных, а в сервере кеширования redis, добавляем настройку и параметры кеширования в deploy.ini-файл проекта
session.type=redis
cache.redis.host=127.0.0.1
cache.redis.port=6379
Настройка отключения формы авторизации для перехода на страницу модуля¶
В конфиге ядра у поля «auth» есть настройка exclude
:
"auth": {
"module": "lib/auth",
"initMethod": "init",
"initLevel": 2,
"options": {
"app": "ion://application",
"logger": "ion://sysLog",
"dataSource": "ion://Db",
"denyTopLevel": "[[auth.denyTop]]",
"authCallbacks": ["[[auth.callback]]"],
"publicRegistration": "[[auth.registration]]",
"exclude": ["[[auth.exclude1]]", "[[auth.exclude2]]", "[[auth.exclude3]]"]
}
}
То есть прописываем в ini-файле проекта:
auth.exclude[] = /registry/ # исключаем только запросы к корню модуля
auth.exclude[] = /registry/** # исключаем запросы ко всем страницам модуля
auth.exclude[] = \/registry\/khv-svyaz-info@naselenniePunkty\/\w+ # исключаем запросы ко всем страницам модуля
внутри ноды khv-svyaz-info@naselenniePunkty
auth.exclude[] = /registry/api/naselenniyPunkt@khv-svyaz-info/** # исключаем запросы к api класса
При переходе на страницу указанного в настройке модуля - данные отображаются без необходимости авторизации.
Отключение авторизации для статичных путей на примере проекта develop-and-test:¶
; Исключение статичных путей ядра из проверки доступа безопасности
auth.exclude[]=/
auth.exclude[]=/vendor/**
auth.exclude[]=/css/**
auth.exclude[]=/fonts/**
auth.exclude[]=/favicon.ico
; Исключение статичных путей модулей из проверки доступа безопасности
auth.exclude[]=/registry/vendor/**
auth.exclude[]=/registry/css/**
auth.exclude[]=/registry/js/**
auth.exclude[]=/registry/app-vendor/**
auth.exclude[]=/registry/app-static/**
auth.exclude[]=/registry/common-static/**
auth.exclude[]=/registry/img/**
auth.exclude[]=/registry/fonts/**
auth.exclude[]=/dashboard/vendor/**
auth.exclude[]=/dashboard/develop-and-test/** ; для проекта develop-and-test
auth.exclude[]=/dashboard/js/**
auth.exclude[]=/registry/viewlib-ext-static/** ; для проекта viewlib-extra
auth.exclude[]=/registry/viewlib-static/js/** ; для проекта viewlib
auth.exclude[]=/gantt-chart/vendor/**
auth.exclude[]=/gantt-chart/gantt/**
auth.exclude[]=/gantt-chart/css/**
auth.exclude[]=/gantt-chart/js/**
auth.exclude[]=/gantt-chart/common-static/**
auth.exclude[]=/gantt-chart/fonts/**
auth.exclude[]=/geomap/vendor/**
auth.exclude[]=/geomap/css/**
auth.exclude[]=/geomap/js/**
auth.exclude[]=/geomap/common-static/**
auth.exclude[]=/geomap/img/**
auth.exclude[]=/geomap/fonts/**
auth.exclude[]=/report/vendor/**
auth.exclude[]=/report/css/**
auth.exclude[]=/report/js/**
auth.exclude[]=/report/common-static/**
auth.exclude[]=/report/img/**
auth.exclude[]=/report/fonts/**
; Исключение всего модуля из проверки доступа безопасности
auth.exclude[]=/portal/**