11 KiB
Настройка авторизации пользователей
Общие сведения
Настройка авторизации пользователей производится с помощью конфигурационного файла ./config/local.js в разделе gate. Следует отметить, что этот файл должен содержаться в списке исключений системы контроля версий (занесён в файл .gitignore). Также для этих целей можно использовать файл ./config/production.js, однако следует учитывать, что настройки файла local.js более приоритетные, чем у production.js.
Использовать файл ./config/default.js для настройки авторизации не рекомендуется по причине необходимости прописать в настройках конфиденциальные данные.
Стандартная авторизация
Настройки веб-сервисов производятся в разделе applications, настройки авторизации пользователей - в подразделе gate. Более подробно про настройку раздела gate можно прочитать в перечне настроек gate.
- sessionLifeTime - время жизни сессии в минутах (по умолчанию
10
). - ldap - раздел, содержащий настройки доменной авторизации (с проверкой логина/пароля на контроллере домена)
- url - адрес контроллера домена. Пример:
ldap(s)://domain:port
. - bindDN - логин администратора домена. В случае пустой строки будет произведена попытка анонимного подключения.
- bindCredentials - пароль администратора домена.
- searchBase - описание базового имени откуда начинается поиск пользователей. Пример:
ou=users,dc=example,dc=org
- searchFilter - описание фильтра ldap для поиска пользователей.
- searchAttributes - список атрибутов, возвращаемых контроллером домена при удачном поиске.
- url - адрес контроллера домена. Пример:
- validation - настройки валидации пароля и логина пользователя.
- passwordRegularExpression - регулярное выражение для проверки пароля (по умолчанию
/^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,}$/
).
- passwordRegularExpression - регулярное выражение для проверки пароля (по умолчанию
Пример:
applications: {
gate: {
sessionLifeTime: 1800,
ldap: {
url: 'ldap://domain.local:port',
bindDN: 'CN=User,CN=Users,DC=domain,DC=local',
bindCredentials: 'password',
searchBase: 'OU=Users,OU=Organization,DC=domain,DC=local',
searchFilter: '(&(objectclass=person)(sAMAccountName={{username}}))',
searchAttributes: ['displayName', 'sAMAccountName']
},
validation: {
passwordRegularExpression: /^[a-zA-Z0-9]{3,}$/
},
// ...
},
// ...
}
Двухфакторная авторизация
- twoFactorProvider - провайдер двухфакторной аутентификации. Доступные значения: none, email, phone (по умолчанию
'none'
). В случае установки значения none считается выключенной. - userTokenLifeTime - устанавливает время действия токена восстановления пароля или кода входа при двухфакторной аутентификации в часах (по умолчанию 1). Можно задавать дробные числа, чтобы указать минуты и/или секунды.
- attemptsLimitForConfirmCode - количество попыток ввода токена восстановления пароля или кода входа при двухфакторной аутентификации (по умолчанию 0). Если значение равно 0, то количество попыток не ограничено.
- timeLimitForResendingConfirmCode - лимит времени (в секундах) для возможности повторной отправки токена восстановления пароля или кода входа при двухфакторной аутентификации (по умолчанию 0 - без ограничений по времени). Настройка влияет на доступность кнопки отправки кода. На сервере проверка не осуществляется.
Чтобы отправка писем на почту работала, необходимо подключить почтовый ящик в разделе applications.post.emails. Чтобы работала отправка СМС, необходимо произвести настройки в разделе applications.post.sms.
Пример:
applications: {
gate: {
sessionLifeTime: 1800,
ldap: {
// ...
},
validation: {
// ...
},
twoFactorProvider: 'phone',
userTokenLifeTime: 0.1,
attemptsLimitForConfirmCode: 3,
timeLimitForResendingConfirmCode: 30
},
// ...
post: {
defaultEmailId: 'default',
emails: {
default: {
host: 'smtp.gmail.com',
port: 587,
secure: false,
user: 'lexemaecm@gmail.com',
pass: 'password',
userName: 'Lexema'
}
},
sms:{
provider: 'mts',
token: 'abc01234-012a-0abc-0895-abc012345678',
sender:'LEXEMAECM'
},
// ...
}
Доменная авторизация
Обновление данных происходит после каждой авторизации пользователя в системе. для обновления необходимо настроить следующие разделы конфигурации:
- applications.gate.ldap.searchAttributes - параметр, отвечающий за возвращаемые наборы данных пользователей при авторизации.
- applications.gate.ldapSchemeDictionary - словарь сопоставления атрибутов пользователя системы и пользователя домена.
ldapSchemeDictionary - словарь сопоставления атрибутов, возвращаемых после поиска пользователя в контроллере домена, и полей, доступных для обновления в таблице пользователей. Ключ словаря - параметр пользователя системы, значение ключа - параметр пользователя домена. Значения должны быть описаны в параметре ldap.searchAttributes. Доступные значения для обновления в таблице: firstName, lastName, middleName, email, phoneNumber.
Пример:
applications: {
gate: {
sessionLifeTime: 1800,
ldap: {
url: 'ldap://domain:port',
bindDN: 'CN=User,CN=Users,DC=domain',
bindCredentials: 'password',
searchBase: 'OU=Users,OU=Organization,DC=domain',
searchFilter: '(&(objectclass=person)(sAMAccountName={{username}}))',
searchAttributes: ['sn', 'givenName', 'mobile', 'middleName', 'mail', 'sAMAccountName']
},
ldapSchemeDictionary: {
firstName: 'givenName',
lastName: 'sn',
middleName: 'middleName',
email: 'mail',
phoneNumber: 'mobile'
}
},
// ...
}
Смена пароля при первом входе в систему
- Чтобы новым пользователям в системе предлагалось сменить пароль при первом входе, необходимо включить настройку enableChangePasswordOnFirstLogin.
- userTokenProvider - имя провайдера восстановления пароля (по умолчанию 'Email'). Доступные значения: Email, Phone. От этой настройки зависит, придёт код для смены пароля на почту или в СМС.
Чтобы отправка писем на почту работала, необходимо подключить почтовый ящик в разделе applications.post.emails. Чтобы работала отправка СМС, необходимо произвести настройки в разделе applications.post.sms.
Пример:
applications: {
gate: {
sessionLifeTime: 1800,
ldap: {
// ...
},
validation: {
// ...
},
enableChangePasswordOnFirstLogin : true,
userTokenProvider: 'Email'
},
// ...
}
Ограничение срока действия паролей пользователей
- Настройка passwordExpiration задает срок действия пароля пользователя в днях, значение 0 отключает проверку (по умолчанию значение 0). По истечении срока действия пароля, при попытке входа в систему пользователю будем предложено сменить пароль. Письмо с одноразовым кодом для смены пароля придёт на почту пользователя.
- userTokenProvider - имя провайдера восстановления пароля (по умолчанию 'Email'). Доступные значения: Email, Phone. От этой настройки зависит, придёт код для смены пароля на почту или в СМС.
Чтобы отправка писем на почту работала, необходимо подключить почтовый ящик в разделе applications.post.emails. Чтобы работала отправка СМС, необходимо произвести настройки в разделе applications.post.sms.