Глобальный контекст.УстановитьПроверкуСложностиПаролейПользователей

Методы · SetUserPasswordStrengthCheck

Устанавливает или отключает следующие ограничения на сложность паролей пользователей информационной базы: Длина не менее 7 символов либо не меньше значения, установленного в параметре "Минимальная длина паролей пользователей", если оно превышает 7; Содержит не менее 3-х типов символов из перечисленных ниже: заглавные буквы; строчные буквы; цифры; спец. символы. Не совпадает с именем пользователя; Не является последовательностью символов. Действует только: при изменении пароля существующего пользователя или при создании нового пользователя, если включена АутентификацияСтандартная или новый пароль не пустой; при включении АутентификацияСтандартная у существующего пользователя, если пароль пустой. Метод доступен только из сеанса, в котором все разделители не используются.

Синтаксис

УстановитьПроверкуСложностиПаролейПользователей(<СложныйПароль>)
Полное описание, параметры и ограничения

Глобальный контекст.УстановитьПроверкуСложностиПаролейПользователей (Global context.SetUserPasswordStrengthCheck)

Глобальный контекст (Global context)

УстановитьПроверкуСложностиПаролейПользователей (SetUserPasswordStrengthCheck)

Доступен, начиная с версии 8.1.

Синтаксис:
УстановитьПроверкуСложностиПаролейПользователей(<СложныйПароль>)
Параметры:

<СложныйПароль> (обязательный)
Тип: Булево.
Истина - установить; Ложь - снять.
Описание:

Устанавливает или отключает следующие ограничения на сложность паролей пользователей информационной базы:
Длина не менее 7 символов либо не меньше значения, установленного в параметре "Минимальная длина паролей пользователей", если оно превышает 7;

Содержит не менее 3-х типов символов из перечисленных ниже:

заглавные буквы;

строчные буквы;

цифры;

спец. символы.

Не совпадает с именем пользователя;

Не является последовательностью символов.
Действует только:
при изменении пароля существующего пользователя или при создании нового пользователя, если включена АутентификацияСтандартная или новый пароль не пустой;

при включении АутентификацияСтандартная у существующего пользователя, если пароль пустой.
Метод доступен только из сеанса, в котором все разделители не используются.

Доступность:

Сервер, толстый клиент, внешнее соединение.

Использование в версии:

Доступен, начиная с версии 8.1.

Описание изменено в версии 8.3.22.

Методическая информация

Практические примеры

Проверить настройки длины, сложности и истории паролей в своём пустом стенде

Административный учебный опыт: получить реальные исходные ограничения, временно установить длину12, сложность и историю3, проверить чтением и восстановить каждое исходное значение независимо.

Где и как запускать

Полный модуль управляемой формы в новом пустом стенде; административные setter/getter на сервере, независимое восстановление первоначальных значений.

Подготовка

  1. Создайте с нуля отдельную пустую конфигурацию УчебнаяПарольнаяПолитика85 на платформе8.5.1.1343; управляемое приложение, без разделителей данных, расширений, обменов и подписок. Не переименовывайте рабочую базу под этот пример.

  2. Это административные настройки всей учебной информационной базы, не значения в локальной структуре. Только один заранее созданный учебный администратор с правом Администрирование; ни одного рабочего пользователя или рабочего пароля.

  3. Используйте отдельную новую файловую базу и единственный сеанс Предприятия. На время опыта исключите другие сеансы, повторную аутентификацию, фоновые входы и изменение паролей. Предварительно проверьте это вручную, а не полагайтесь только на имя конфигурации.

  4. Обработки → ОпытПарольнойПолитики85 → управляемая основная форма. Добавьте реквизит ПодтверждаюПустойСтенд типа Булево, исходно Ложь, и покажите его флажком. Для каждого урока используйте отдельную обработку либо целиком замените модуль формы.

  5. Добавьте команду с именем указанной клиентской процедуры, назначьте её действие и кнопку. Основной код — полный модуль формы; обе процедуры/функции уже показаны и не вставляются внутрь другого обработчика.

  6. Нажмите F7 и обновите только новый стенд. runtimeVerifiedScenarios=0: здесь примеры не запускались, пользователей и пароли не меняли; выполнены только статические проверки.

  7. Перед своим ручным запуском изучите весь блок восстановления. Исходные значения читаются до первой записи; после опыта восстанавливаются именно они, а не справочные значения по умолчанию.

  8. Установите флажок только после подготовки стенда. Клиент передаёт подтверждение, сервер повторно проверяет его. Это защита от случайного запуска, не универсальная авторизация для production.

  9. Не вводите и не выводите пароли. Код не создаёт пользователей, не вызывает проверку раскрытия конкретного пароля, не делает входов и не проверяет реальную реакцию диалогов аутентификации.

  10. Если восстановление не подтвердилось, не повторяйте опыт и не входите другим пользователем: администратор должен вручную сверить только настройки отдельного учебного стенда. Принудительное завершение процесса не гарантирует выполнение восстановления.

  11. Команда ПроверитьДлинуИСложность85; серверная функция ПроверитьСвоиОграничения вызывается только этой кнопкой.

&НаКлиенте
Процедура ПроверитьДлинуИСложность85(Команда)
    Если Не ПодтверждаюПустойСтенд Тогда
        ВызватьИсключение "Подтвердите работу только в своём новом пустом стенде";
    КонецЕсли;
    Сообщить(ПроверитьСвоиОграничения(ПодтверждаюПустойСтенд));
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПроверитьСвоиОграничения(Подтверждение)
    Если ТипЗнч(Подтверждение) <> Тип("Булево") Тогда
        ВызватьИсключение "Нужно явное подтверждение нового пустого стенда";
    КонецЕсли;
    Если Не Подтверждение Тогда
        ВызватьИсключение "Только новый пустой стенд УчебнаяПарольнаяПолитика85 с отдельным согласием";
    КонецЕсли;
    ИсходнаяДлина = ПолучитьМинимальнуюДлинуПаролейПользователей();
    ИсходнаяСложность = ПолучитьПроверкуСложностиПаролейПользователей();
    ИсходнаяИстория = ПолучитьОграничениеПовторенияПаролейПользователейСредиПоследних();
    ОшибкаОпыта = "";
    Попытка
        УстановитьМинимальнуюДлинуПаролейПользователей(12);
        УстановитьПроверкуСложностиПаролейПользователей(Истина);
        УстановитьОграничениеПовторенияПаролейПользователейСредиПоследних(3);
        Если ПолучитьМинимальнуюДлинуПаролейПользователей() <> 12
            Или Не ПолучитьПроверкуСложностиПаролейПользователей()
            Или ПолучитьОграничениеПовторенияПаролейПользователейСредиПоследних() <> 3 Тогда
            ВызватьИсключение "Учебные ограничения не подтвердились повторным чтением";
        КонецЕсли;
    Исключение
        ОшибкаОпыта = ОписаниеОшибки();
    КонецПопытки;
    Попытка
        УстановитьМинимальнуюДлинуПаролейПользователей(ИсходнаяДлина);
    Исключение
        ОшибкаОпыта = ОшибкаОпыта + " Не восстановлена длина: " + ОписаниеОшибки();
    КонецПопытки;
    Попытка
        УстановитьПроверкуСложностиПаролейПользователей(ИсходнаяСложность);
    Исключение
        ОшибкаОпыта = ОшибкаОпыта + " Не восстановлена сложность: " + ОписаниеОшибки();
    КонецПопытки;
    Попытка
        УстановитьОграничениеПовторенияПаролейПользователейСредиПоследних(ИсходнаяИстория);
    Исключение
        ОшибкаОпыта = ОшибкаОпыта + " Не восстановлена история: " + ОписаниеОшибки();
    КонецПопытки;
    Попытка
        Если ПолучитьМинимальнуюДлинуПаролейПользователей() <> ИсходнаяДлина
            Или ПолучитьПроверкуСложностиПаролейПользователей() <> ИсходнаяСложность
            Или ПолучитьОграничениеПовторенияПаролейПользователейСредиПоследних() <> ИсходнаяИстория Тогда
            ВызватьИсключение "Исходные ограничения ещё не восстановлены";
        КонецЕсли;
    Исключение
        ОшибкаОпыта = ОшибкаОпыта + " Проверка восстановления: " + ОписаниеОшибки();
    КонецПопытки;
    Если ОшибкаОпыта <> "" Тогда
        ВызватьИсключение ОшибкаОпыта;
    КонецЕсли;
    Возврат "Длина12, сложность и история3 проверены чтением настроек. Исходные настройки восстановлены. Пароли не изменялись.";
КонецФункции

Разбор по шагам

  1. Сначала читаются текущие длина, сложность и размер истории; если чтение не удалось, запись ещё не начинается.

  2. Три setter-метода применяют учебные значения к реальной собственной базе. Getter-методы проверяют каждое значение; несовпадение вызывает исключение.

  3. При включённой сложности действует минимум7 символов либо более высокая настроенная длина. Здесь12 выше7, поэтому именно12 остаётся ограничением длины.

  4. Исключение опыта сохраняется в строке. После него предпринимаются все три независимые попытки вернуть первоначальные значения.

  5. Контрольное чтение сравнивается со снимком, а не с числами5/0 из справки. Ошибки записи и восстановления складываются в итоговое исключение.

  6. Успех означает проверку и восстановление настроек. Создание пользователей, смена паролей и проверка повторного пароля в этом опыте не выполняются.

Как проверить результат

  1. Во время опыта повторное чтение подтверждает12, Истина и3.

  2. После опыта три значения равны первоначальным, даже если первоначальная политика отличается от значений по умолчанию.

  3. Если хотя бы одна попытка восстановления не удалась, код не выводит сообщение об успехе и сообщает исходную ошибку вместе с ошибками восстановления.

  4. Ни пароль, ни хеш, ни имя рабочего пользователя не выводятся; в опыте нет создания пользователя или операции аутентификации.

Ожидаемый результат

Учебные ограничения подтверждены чтением и исходная политика восстановлена; пользовательские пароли не менялись.

На что обратить внимание

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

  2. Восстановление после обработанного исключения не гарантирует восстановление при падении процесса, отключении питания или потере соединения. Поэтому нужен отдельный пустой стенд, а не production.

  3. Каждая попытка восстановления независима, ошибки не замалчиваются. Даже успешное повторное чтение не превращает незавершённую миграцию пользовательских данных в откат.

  4. Значения этого опыта иллюстрируют API и проверки, а не рекомендуемую политику безопасности организации. Не переносите их как готовый стандарт.

  5. Проверка getter-методом доказывает только текущее значение настройки. Она не доказывает проверку конкретного пароля, историю ранее использованных паролей или реальный сценарий входа.

  6. В справочнике runtimeVerifiedScenarios=0. Перед самостоятельным использованием нужны F7 и контролируемый ручной опыт в собственном стенде; фактический запуск здесь не выполнялся.

  7. По справке правила длины/сложности применяются при создании или изменении пароля и отдельных изменениях стандартной аутентификации. Это не автоматическая перепроверка всех уже сохранённых паролей.

  8. История3 не означает, что у нового пользователя уже есть три предыдущих пароля. Этот урок проверяет настройку истории, а не наполняет её.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.