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

Учебные задачи

Получаем настоящий объект настроек у глобального менеджера. Секунды переводим в минуты только для показа; содержимое альтернативных кодов не выводим.

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

Полный серверный общий модуль собственной пустой файловой Windows-базы 8.5.1.1343. Политика только своего стенда или блокировка только подготовленного УчебныйПользователь85; здесь в 1С не запускался.

Подготовка

  1. Создайте собственную новую пустую файловую конфигурацию УчебнаяКонфигурацияСинтаксиса на Windows 8.5.1.1343. Не используйте рабочую УТ/КА2/УНФ/БП и не копируйте в стенд список реальных пользователей.

  2. В новом стенде в Общие → Роли создайте собственную роль УчебныйАдминистратор85 с правом Администрирование (Administration) корневой конфигурации, затем назначьте её двум собственным пользователям-администраторам через Администрирование → Пользователи. Сохраните доступ второго для восстановления. Опыт выполняйте под одним из них; не блокируйте администратора и не обходите недостаток прав привилегированным режимом.

  3. Для уроков блокировок создайте только собственного пользователя УчебныйПользователь85 с аутентификацией 1С. Его пароль задаётся оператором в Конфигураторе, не записывается в этот модуль и не показывается в отчёте.

  4. У стенда не должно быть разделения пользователей/аутентификации общими реквизитами. Метод отбирает реальное имя; для каждого результата отдельно проверяются имя, фактический UUID подготовленного пользователя и пустые значения разделителей.

  5. Создайте общий модуль УчебнаяБлокировка: Сервер=Истина, Глобальный=Ложь, Привилегированный=Ложь. Клиентские флаги выключены. Вставьте весь выбранный модуль.

  6. Команда собственной формы вызывает вашу процедуру &НаСервереБезКонтекста, которая выполняет УчебнаяБлокировка.ВыполнитьПример(). Код не запускает клиент, не подбирает пароль и не создаёт неуспешные попытки входа.

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

  8. Для положительного опыта только оператор своего отдельного стенда может заранее получить реальную блокировку входа собственного УчебныйПользователь85 неуспешными попытками его входа. Сохраните доступ второго администратора; не повторяйте это в рабочей базе. Здесь такие попытки не выполнялись.

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

  10. Урок смены настроек сохраняет три исходных значения отдельно, меняет их только на 3 попытки, 120 секунд и пустую строку дополнений имени, читает результат заново и затем восстанавливает исходный снимок.

  11. КодыДополненияИмениПользователя — коды альтернативного имени для входа заблокированного пользователя. Это не обычное отображаемое имя, не пароль и не безопасная информация для общего отчёта; их содержимое нигде не выводится.

  12. Разблокировать — процедура без результата Булево. После неё выполняется новый отбор; уже созданные сеансы, пароль и роли не изменяются. Если несколько результатов или разделители непустые, автоматическое снятие запрещено.

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

  14. Здесь в 1С этот код не запускался, настройки/пользователи/блокировки не менялись и попытки входа не выполнялись. Проверены исходники и установленная справка; runtime-проверки остаются отсутствующими.

Процедура ВыполнитьПример() Экспорт
    ПроверитьУчебнуюПлатформу();
    Настройки = БлокировкаАутентификации.ПолучитьНастройки();
    Если ТипЗнч(Настройки) <> Тип("НастройкиБлокировкиАутентификацииПользователейИнформационнойБазы") Тогда
        ВызватьИсключение "Ожидались настройки блокировки";
    КонецЕсли;
    Если Настройки.ДлительностьБлокировки <= 0 Тогда
        ВызватьИсключение "Длительность должна быть положительной в секундах";
    КонецЕсли;
    Сообщить("Максимальное количество неуспешных попыток: " + Строка(Настройки.МаксимальноеКоличествоНеуспешныхПопыток));
    Сообщить("Длительность в секундах: " + Строка(Настройки.ДлительностьБлокировки));
    Сообщить("Для показа в минутах: " + Строка(Настройки.ДлительностьБлокировки / 60));
    Сообщить("Дополнения имени заданы (без вывода кодов): " + Строка(Настройки.КодыДополненияИмениПользователя <> ""));
    Сообщить("Только чтение. Ни настройки, ни блокировки не изменены.");
КонецПроцедуры
Процедура ПроверитьУчебнуюПлатформу()
    Система = Новый СистемнаяИнформация;
    Если Система.ТипПлатформы <> ТипПлатформы.Windows_x86
        И Система.ТипПлатформы <> ТипПлатформы.Windows_x86_64 Тогда
        ВызватьИсключение "Этот пример использует Windows CryptoAPI";
    КонецЕсли;
КонецПроцедуры

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

  1. Проверить свою пустую конфигурацию и точную Windows-платформу, использовать администратора только собственного стенда.

  2. ПолучитьНастройки без параметров возвращает объект настроек, не Булево и не набор записей.

  3. Проверить тип и положительность секунд; вывести фактический порог и длительность.

  4. Разделить секунды на 60 только для отдельного человекочитаемого поля; настройки не переписывать.

  5. Показать лишь наличие кодов, не сами коды. Не создавать и не снимать блокировки.

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

  1. Показаны фактические порог, секунды, минуты и Булево наличия дополнений имени.

  2. Коды альтернативного входа не попали в сообщения.

  3. Нет вызова УстановитьНастройки или Разблокировать; попытки входа не выполнялись.

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

Получен понятный безопасный отчёт о настоящей политике собственного учебного стенда.

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

  1. БлокировкаАутентификации — глобальное свойство менеджера, а не конструктор. Настройки получают через ПолучитьНастройки, блокировки — через ПолучитьБлокировки.

  2. ДлительностьБлокировки измеряется в секундах и должна быть больше нуля. Нельзя объявлять 120 миллисекундами или передавать нулевую длительность для отключения.

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

  4. Коды дополнения имени могут использоваться для альтернативного входа. Не выводите реальные коды и не подменяйте их случайным 123 из справочного примера.

  5. Имя пользователя без UUID и разделителей недостаточно для безопасного снятия. В стенде с разделением аутентификации нужен отдельный разобранный отбор, а не этот пример.

  6. Изменение всей политики базы и снятие одной блокировки — разные действия. Снятие не создаёт сеанс, не меняет пароль и не доказывает правильность прав пользователя.

  7. Неудача восстановления явно показывается. После аварийного завершения клиента восстановление самим BSL не гарантируется.

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

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

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

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

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