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

Настройка авторизации пользователей#

Общие сведения#

Настройка авторизации пользователей производится с помощью конфигурационного файла ./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 - список атрибутов, возвращаемых контроллером домена при удачном поиске.
  • validation - настройки валидации пароля и логина пользователя.
  • passwordRegularExpression - регулярное выражение для проверки пароля (по умолчанию /^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,}$/).

Пример:

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.