Устанавливает проверку раскрытия паролей пользователей информационной базы.
Синтаксис
УстановитьПроверкуРаскрытияПаролейПользователей(<ПроверкаРаскрытияПаролейПользователей>)Полное описание, параметры и ограничения
Глобальный контекст.УстановитьПроверкуРаскрытияПаролейПользователей (Global context.SetUserPasswordCompromiseCheck)
Глобальный контекст (Global context)
УстановитьПроверкуРаскрытияПаролейПользователей (SetUserPasswordCompromiseCheck)
Доступен, начиная с версии 8.3.26.
Синтаксис:
УстановитьПроверкуРаскрытияПаролейПользователей(<ПроверкаРаскрытияПаролейПользователей>)
Параметры:
<ПроверкаРаскрытияПаролейПользователей> (обязательный)
Тип: Булево.
Проверка раскрытия паролей пользователей.
Значение по умолчанию: Ложь.
Описание:
Устанавливает проверку раскрытия паролей пользователей информационной базы.
Доступность:
Сервер, толстый клиент, внешнее соединение.
Использование в версии:
Доступен, начиная с версии 8.3.26.
Методическая информация
Практические примеры
Сравнить три действия политики входа и настройку алгоритма без аутентификации
Проверяются PBKDF2SHA256, флаг проверки раскрытия и три значения действия при несоответствии пароля требованиям. Это только административная настройка с восстановлением: ни вход, ни смена пароля, ни внешняя проверка не вызываются.
Где и как запускать
Полный модуль управляемой формы; серверные административные настройки собственного пустого стенда, никакой аутентификации, смены паролей и внешних вызовов.
Подготовка
Создайте с нуля отдельную пустую конфигурацию УчебнаяПарольнаяПолитика85 на платформе8.5.1.1343; управляемое приложение, без разделителей данных, расширений, обменов и подписок. Не переименовывайте рабочую базу под этот пример.
Это административные настройки всей учебной информационной базы, не значения в локальной структуре. Только один заранее созданный учебный администратор с правом Администрирование; ни одного рабочего пользователя или рабочего пароля.
Используйте отдельную новую файловую базу и единственный сеанс Предприятия. На время опыта исключите другие сеансы, повторную аутентификацию, фоновые входы и изменение паролей. Предварительно проверьте это вручную, а не полагайтесь только на имя конфигурации.
Обработки → ОпытПарольнойПолитики85 → управляемая основная форма. Добавьте реквизит ПодтверждаюПустойСтенд типа Булево, исходно Ложь, и покажите его флажком. Для каждого урока используйте отдельную обработку либо целиком замените модуль формы.
Добавьте команду с именем указанной клиентской процедуры, назначьте её действие и кнопку. Основной код — полный модуль формы; обе процедуры/функции уже показаны и не вставляются внутрь другого обработчика.
Нажмите F7 и обновите только новый стенд. runtimeVerifiedScenarios=0: здесь примеры не запускались, пользователей и пароли не меняли; выполнены только статические проверки.
Перед своим ручным запуском изучите весь блок восстановления. Исходные значения читаются до первой записи; после опыта восстанавливаются именно они, а не справочные значения по умолчанию.
Установите флажок только после подготовки стенда. Клиент передаёт подтверждение, сервер повторно проверяет его. Это защита от случайного запуска, не универсальная авторизация для production.
Не вводите и не выводите пароли. Код не создаёт пользователей, не вызывает проверку раскрытия конкретного пароля, не делает входов и не проверяет реальную реакцию диалогов аутентификации.
Если восстановление не подтвердилось, не повторяйте опыт и не входите другим пользователем: администратор должен вручную сверить только настройки отдельного учебного стенда. Принудительное завершение процесса не гарантирует выполнение восстановления.
Команда ПроверитьНастройкиАутентификации85. Только один уже открытый сеанс учебного администратора с правом Администрирование; новые входы и изменения пароля запрещены до конца восстановления.
Не запускайте параллельно другой клиент или аутентифицируемое соединение. Изменение алгоритма влияет на последующие входы/смены паролей; возвращение настройки не отменяет уже случившуюся миграцию.
&НаКлиенте
Процедура ПроверитьНастройкиАутентификации85(Команда)
Если Не ПодтверждаюПустойСтенд Тогда
ВызватьИсключение "Подтвердите работу только в своём новом пустом стенде";
КонецЕсли;
Сообщить(ПроверитьСвоюПолитикуВхода(ПодтверждаюПустойСтенд));
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПроверитьСвоюПолитикуВхода(Подтверждение)
Если ТипЗнч(Подтверждение) <> Тип("Булево") Тогда
ВызватьИсключение "Нужно явное подтверждение нового пустого стенда";
КонецЕсли;
Если Не Подтверждение Тогда
ВызватьИсключение "Только новый пустой стенд УчебнаяПарольнаяПолитика85 с отдельным согласием";
КонецЕсли;
ИсходныйАлгоритм = ПолучитьТипАлгоритмаХешированияПаролейПользователей();
ИсходноеДействие = ПолучитьДействиеПриНесоответствииПаролейПользователейТребованиямПриАутентификации();
ИсходнаяПроверкаРаскрытия = ПолучитьПроверкуРаскрытияПаролейПользователей();
УчебнаяПроверкаРаскрытия = Не ИсходнаяПроверкаРаскрытия;
ОшибкаОпыта = "";
Попытка
УстановитьТипАлгоритмаХешированияПаролейПользователей(ТипАлгоритмаХешированияПаролейПользователей.PBKDF2SHA256);
УстановитьПроверкуРаскрытияПаролейПользователей(УчебнаяПроверкаРаскрытия);
Если ПолучитьТипАлгоритмаХешированияПаролейПользователей() <> ТипАлгоритмаХешированияПаролейПользователей.PBKDF2SHA256
Или ПолучитьПроверкуРаскрытияПаролейПользователей() <> УчебнаяПроверкаРаскрытия Тогда
ВызватьИсключение "Алгоритм и переключённый флаг не подтвердились";
КонецЕсли;
Варианты = Новый Массив;
Варианты.Добавить(ДействиеПриНесоответствииПароляТребованиямПриАутентификации.Нет);
Варианты.Добавить(ДействиеПриНесоответствииПароляТребованиямПриАутентификации.ПредложитьСменуПароля);
Варианты.Добавить(ДействиеПриНесоответствииПароляТребованиямПриАутентификации.ПотребоватьСменуПароля);
Для Каждого Действие Из Варианты Цикл
УстановитьДействиеПриНесоответствииПаролейПользователейТребованиямПриАутентификации(Действие);
Если ПолучитьДействиеПриНесоответствииПаролейПользователейТребованиямПриАутентификации() <> Действие Тогда
ВызватьИсключение "Выбранное действие политики входа не подтвердилось";
КонецЕсли;
КонецЦикла;
Исключение
ОшибкаОпыта = ОписаниеОшибки();
КонецПопытки;
Попытка
УстановитьДействиеПриНесоответствииПаролейПользователейТребованиямПриАутентификации(ИсходноеДействие);
Исключение
ОшибкаОпыта = ОшибкаОпыта + " Не восстановлено действие: " + ОписаниеОшибки();
КонецПопытки;
Попытка
УстановитьТипАлгоритмаХешированияПаролейПользователей(ИсходныйАлгоритм);
Исключение
ОшибкаОпыта = ОшибкаОпыта + " Не восстановлен алгоритм: " + ОписаниеОшибки();
КонецПопытки;
Попытка
УстановитьПроверкуРаскрытияПаролейПользователей(ИсходнаяПроверкаРаскрытия);
Исключение
ОшибкаОпыта = ОшибкаОпыта + " Не восстановлена проверка раскрытия: " + ОписаниеОшибки();
КонецПопытки;
Попытка
Если ПолучитьТипАлгоритмаХешированияПаролейПользователей() <> ИсходныйАлгоритм
Или ПолучитьДействиеПриНесоответствииПаролейПользователейТребованиямПриАутентификации() <> ИсходноеДействие
Или ПолучитьПроверкуРаскрытияПаролейПользователей() <> ИсходнаяПроверкаРаскрытия Тогда
ВызватьИсключение "Исходные настройки политики входа ещё не восстановлены";
КонецЕсли;
Исключение
ОшибкаОпыта = ОшибкаОпыта + " Проверка восстановления: " + ОписаниеОшибки();
КонецПопытки;
Если ОшибкаОпыта <> "" Тогда
ВызватьИсключение ОшибкаОпыта;
КонецЕсли;
Возврат "PBKDF2SHA256, флаг раскрытия и три действия проверены только чтением настроек и восстановлены. Аутентификация и смена пароля не выполнялись.";
КонецФункцииРазбор по шагам
До записи читаются исходный алгоритм, действие при несоответствии и флаг проверки раскрытия; это реальные значения своей базы, а не жёстко заданный откат.
Ставится PBKDF2SHA256 и переключается булев флаг раскрытия. Чтение подтверждает именно новый алгоритм и новое состояние флага.
Массив содержит три реальные readonly-константы действия: Нет, ПредложитьСменуПароля, ПотребоватьСменуПароля. Они не конструируются и не получают значения присваиванием.
Для каждого варианта выполняются установка и чтение. По установленной справке Нет записывает событие нарушения, Предложить показывает пропускаемый диалог, Потребовать — непропускаемый; сами диалоги здесь не запускаются.
Первым возвращается исходное действие, затем алгоритм и флаг раскрытия. Попытки независимы; окончательная проверка сверяет весь исходный снимок.
Код не вызывает Аутентификация, смену пароля или ПроверитьРаскрытиеПароля. Успех подтверждает настройки, а не внешнюю службу проверки и не фактическую миграцию хешей.
Как проверить результат
ПолучитьТипАлгоритмаХешированияПаролейПользователей подтверждает PBKDF2SHA256 до восстановления.
Флаг раскрытия меняется на противоположный и возвращается к первоначальному.
Все три варианта действия проходят setter/getter-проверку без входа пользователя.
Последнее чтение подтверждает исходный алгоритм, действие и флаг. Пользовательские хеши этот код не читает и не выводит.
Ожидаемый результат
Алгоритм, флаг и три действия проверены чтением настроек; исходная политика восстановлена без входов и смены паролей.
На что обратить внимание
Настройки действуют на всю информационную базу. Изменение записывается вне локальных переменных; не используйте код в рабочей базе или фоновом задании.
Восстановление после обработанного исключения не гарантирует восстановление при падении процесса, отключении питания или потере соединения. Поэтому нужен отдельный пустой стенд, а не production.
Каждая попытка восстановления независима, ошибки не замалчиваются. Даже успешное повторное чтение не превращает незавершённую миграцию пользовательских данных в откат.
Значения этого опыта иллюстрируют API и проверки, а не рекомендуемую политику безопасности организации. Не переносите их как готовый стандарт.
Проверка getter-методом доказывает только текущее значение настройки. Она не доказывает проверку конкретного пароля, историю ранее использованных паролей или реальный сценарий входа.
В справочнике runtimeVerifiedScenarios=0. Перед самостоятельным использованием нужны F7 и контролируемый ручной опыт в собственном стенде; фактический запуск здесь не выполнялся.
По справке новый алгоритм применяется к хранимому значению пароля при следующей аутентификации или изменении пароля. Возврат прежней настройки не равен откату миграции уже изменённых пользовательских хешей.
Нет не означает полного отсутствия реакции: при выявленном нарушении платформа записывает событие в журнал регистрации.
ПотребоватьСменуПароля может вызвать исключение, если пользователю запрещена смена пароля. Не используйте этот флаг для неизвестных пользователей без отдельного согласованного процесса.
Включение флага проверки раскрытия не доказывает доступность внешней службы и не проверяет конкретный пароль. Этот урок не выполняет такие обращения и не демонстрирует их успешность.
Алгоритмы новее SHA-1 требуют платформы8.3.26 и выше; урок ограничен8.5.1.1343. Не используйте этот опыт как план миграции смешанного парка старых клиентов.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.