Глобальный контекст.ПолучитьДействиеПриНесоответствииПаролейПользователейТребованиямПриАутентификации

Методы · GetActionOnUserPasswordRequirementsViolationOnAuthentication

Возвращает действие при несоответствии паролей пользователей требованиям при аутентификации.

Синтаксис

ПолучитьДействиеПриНесоответствииПаролейПользователейТребованиямПриАутентификации()
Полное описание, параметры и ограничения

Глобальный контекст.ПолучитьДействиеПриНесоответствииПаролейПользователейТребованиямПриАутентификации (Global context.GetActionOnUserPasswordRequirementsViolationOnAuthentication)

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

ПолучитьДействиеПриНесоответствииПаролейПользователейТребованиямПриАутентификации (GetActionOnUserPasswordRequirementsViolationOnAuthentication)

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

Синтаксис:
ПолучитьДействиеПриНесоответствииПаролейПользователейТребованиямПриАутентификации()
Возвращаемое значение:
Тип: ДействиеПриНесоответствииПароляТребованиямПриАутентификации.

Описание:

Возвращает действие при несоответствии паролей пользователей требованиям при аутентификации.

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

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер, интеграция.

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

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

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

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

Сравнить три действия политики входа и настройку алгоритма без аутентификации

Проверяются PBKDF2SHA256, флаг проверки раскрытия и три значения действия при несоответствии пароля требованиям. Это только административная настройка с восстановлением: ни вход, ни смена пароля, ни внешняя проверка не вызываются.

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

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

Подготовка

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

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

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

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

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

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

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

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

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

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

  11. Команда ПроверитьНастройкиАутентификации85. Только один уже открытый сеанс учебного администратора с правом Администрирование; новые входы и изменения пароля запрещены до конца восстановления.

  12. Не запускайте параллельно другой клиент или аутентифицируемое соединение. Изменение алгоритма влияет на последующие входы/смены паролей; возвращение настройки не отменяет уже случившуюся миграцию.

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

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

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

  1. До записи читаются исходный алгоритм, действие при несоответствии и флаг проверки раскрытия; это реальные значения своей базы, а не жёстко заданный откат.

  2. Ставится PBKDF2SHA256 и переключается булев флаг раскрытия. Чтение подтверждает именно новый алгоритм и новое состояние флага.

  3. Массив содержит три реальные readonly-константы действия: Нет, ПредложитьСменуПароля, ПотребоватьСменуПароля. Они не конструируются и не получают значения присваиванием.

  4. Для каждого варианта выполняются установка и чтение. По установленной справке Нет записывает событие нарушения, Предложить показывает пропускаемый диалог, Потребовать — непропускаемый; сами диалоги здесь не запускаются.

  5. Первым возвращается исходное действие, затем алгоритм и флаг раскрытия. Попытки независимы; окончательная проверка сверяет весь исходный снимок.

  6. Код не вызывает Аутентификация, смену пароля или ПроверитьРаскрытиеПароля. Успех подтверждает настройки, а не внешнюю службу проверки и не фактическую миграцию хешей.

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

  1. ПолучитьТипАлгоритмаХешированияПаролейПользователей подтверждает PBKDF2SHA256 до восстановления.

  2. Флаг раскрытия меняется на противоположный и возвращается к первоначальному.

  3. Все три варианта действия проходят setter/getter-проверку без входа пользователя.

  4. Последнее чтение подтверждает исходный алгоритм, действие и флаг. Пользовательские хеши этот код не читает и не выводит.

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

Алгоритм, флаг и три действия проверены чтением настроек; исходная политика восстановлена без входов и смены паролей.

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

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

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

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

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

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

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

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

  8. Нет не означает полного отсутствия реакции: при выявленном нарушении платформа записывает событие в журнал регистрации.

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

  10. Включение флага проверки раскрытия не доказывает доступность внешней службы и не проверяет конкретный пароль. Этот урок не выполняет такие обращения и не демонстрирует их успешность.

  11. Алгоритмы новее SHA-1 требуют платформы8.3.26 и выше; урок ограничен8.5.1.1343. Не используйте этот опыт как план миграции смешанного парка старых клиентов.

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

Прочитать требования к паролям, не проверяя пароль пользователя

Чтение минимальной длины, сложности, запрета раскрытых паролей и истории — это чтение политики, не проверка реального секрета.

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

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

Подготовка

  1. Используйте только отдельную конфигурацию УчебнаяКонфигурацияСинтаксиса. Создайте серверный общий модуль УчебнаяПолитика с флагом Сервер, без флага Привилегированный; вставьте полный модуль выбранного урока и вызовите ВыполнитьПример из собственной серверной команды.

  2. Первые четыре урока вызывают реальные штатные getters в серверном модуле. Выбранные страницы справки не задают для этих методов отдельного требования Администрирование; это не обещание отсутствия внутренних проверок прав. Любая фактическая ошибка сохраняется в ОписаниеОшибки и останавливает опыт без повышения прав, повторного вызова или подстановки значений. Пятый урок создаёт только новый объект в памяти и не читает текущие настройки.

  3. Первые четыре урока только читают настройки. Пятый создаёт новый черновик БлокировкаСеансов в памяти. Ни один урок не вызывает УстановитьБлокировкуСеансов или изменение политики паролей.

  4. Не вводите пароли пользователей и коды разрешения действующих блокировок. Учебник не проверяет чей-либо пароль, не отправляет его на внешний сервис и не выводит код /uc.

  5. Секунды для сроков действия паролей сверены по вашему реальному модулю УНФ: C:\claude\UNF\UNF_XML\CommonModules\ПользователиСлужебный\Ext\Module.bsl, процедура ЗаполнитьНастройкиИзПолитикиПаролейПользователей, строки 3197–3233. Там используется деление на 24×60×60. Урок не вызывает этот модуль и не зависит от БСП.

  6. Фактические настройки и административные ограничения зависят от вашей собственной базы. BSL-примеры не исполнялись в 1С автоматически.

Процедура ВыполнитьПример() Экспорт
    Попытка
        МинимальнаяДлина = ПолучитьМинимальнуюДлинуПаролейПользователей();
        Сложность = ПолучитьПроверкуСложностиПаролейПользователей();
        ЗапретРаскрытых = ПолучитьПроверкуРаскрытияПаролейПользователей();
        История = ПолучитьОграничениеПовторенияПаролейПользователейСредиПоследних();
        Действие = ПолучитьДействиеПриНесоответствииПаролейПользователейТребованиямПриАутентификации();
        Алгоритм = ПолучитьТипАлгоритмаХешированияПаролейПользователей();
        Сообщить(ТипЗнч(МинимальнаяДлина) = Тип("Число"));
        Сообщить(ТипЗнч(Сложность) = Тип("Булево"));
        Сообщить(ТипЗнч(ЗапретРаскрытых) = Тип("Булево"));
        Сообщить(ТипЗнч(История) = Тип("Число"));
        Сообщить("Минимальная длина своей политики: " + Строка(МинимальнаяДлина));
        Сообщить("Требование сложности включено: " + Строка(Сложность));
        Сообщить("Ограничение раскрытых паролей включено: " + Строка(ЗапретРаскрытых));
        Сообщить("Ограничение повторения среди последних: " + Строка(История));
        Сообщить("Действие при несоответствии: " + Строка(Действие));
        Сообщить("Настроенный алгоритм хеширования: " + Строка(Алгоритм));
    Исключение
        ВызватьИсключение "СТОП: штатное чтение настроек собственной базы не завершено: " + ОписаниеОшибки();
    КонецПопытки;
КонецПроцедуры

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

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

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

  3. Отдельно получить действие при входе и выбранный алгоритм хеширования.

  4. Подписать фактические значения; не заменять нули или Ложь придуманными рекомендуемыми настройками.

  5. Не спрашивать пароль и не вызывать проверку раскрытия конкретного пароля: этот опыт касается только состояния настроек.

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

  1. Четыре проверки типов Истина и фактические настройки собственной базы.

  2. Ни один пароль, хеш пользователя или список его прежних паролей не читается и не выводится.

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

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

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

  1. Включённая проверка сложности не доказывает, что каждый текущий пароль уже безопасен.

  2. ПолучитьПроверкуРаскрытияПаролейПользователей возвращает флаг политики, не результат поиска конкретного пароля в утечках.

  3. Имя алгоритма не является хешем пользователя; изменение алгоритма в этом уроке не выполняется.

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

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

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

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

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