Работа с паролями пользователей в 1С

Для того чтобы программно задать пароль пользователя в 1С, нужно сначала получить нужного пользователя информационной базы. Для этого используется метод НайтиПоИмени() менеджера пользователей информационной базы.

Пользователь = "Иванов Иван Иванович";
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(Пользователь);

Установка нового пароля

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

ПользовательИБ.Пароль = "q12345";

После установки пароля свойство ПарольУстановлен пользователя информационной базы примет значение Истина. Пароль начнет работать после перезапуска системы.

Установка требований к сложности пароля в 1С

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

При включении этой функции пароль проверяется на соответствие следующим требованиям:

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

Можно включить эту функцию программно:

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

Для проверки вводимого пользователем пароля на соответствие этим требованиям попытаемся создать временного пользователя с заданным паролем. В функцию мы будем передавать сам новый пароль. Функция будет возвращать значение Истина, если пароль соответствует требованиям, и Ложь — если не соответствует.

Функция ПарольСоответствуетТребованиям (Пароль)

//Убедимся, что проверка сложности включена
УстановитьПроверкуСложностиПаролейПользователей(Истина);

//Создадим временного пользователя и установим его параметры
ВременныйПользовательИБ = ПользователиИнформационнойБазы.СоздатьПользователя();
ВременныйПользовательИБ.АутентификацияСтандартная = Истина;
ВременныйПользовательИБ.Имя = НСтр("ru = 'Временный пользователь'")+
" (" + Строка(Новый УникальныйИдентификатор) + ")";

//Установим временному пользователю требуемый пароль
ВременныйПользовательИБ.Пароль = Пароль;

//Попытаемся записать временного пользователя.
//Если появится ошибка, значит пароль не соответствует требованиям
ХорошийПароль = Истина;

Попытка

ВременныйПользовательИБ.Записать();

Исключение

ХорошийПароль = Ложь;

КонецПопытки;

//Удалим временного пользователя
ВременныйПользовательИБ.Удалить();

Возврат ХорошийПароль;

КонецФункции

Как программно проверить пароль пользователя 1С

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

Пароль из информационной базы мы можем получить только в хешированном виде через свойство СохраняемоеЗначениеПароля пользователя ИБ.

Для проверки соответствия введенного пароля паролю из информационной базы можно использовать следующую функцию. В нее мы передадим введенный пароль и имя пользователя. Функция вернет значение Истина, если пароль соответствует паролю информационной базы, и Ложь — если не соответствует.

Функция ПроверитьПароль (Пользователь, Пароль)

//Получим пользователя ИБ
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(Пользователь);

//Получим хешированное представление введенного пароля
ХешированиеДанных = Новый ХешированиеДанных(ХешФункция.SHA1);
ХешированиеДанных.Добавить(Пароль);
ХешированныйНовыйПароль = Base64Строка(ХешированиеДанных.ХешСумма);
ХешированиеДанных = Новый ХешированиеДанных(ХешФункция.SHA1);
ХешированиеДанных.Добавить(ВРег(Пароль));
ХешированныйНовыйПароль = ХешированныйНовыйПароль + ","+ Base64Строка(ХешированиеДанных.ХешСумма);

//Сравним полученный хешированный пароль и хешем пароля в информационной базе
Возврат ХешированныйНовыйПароль = ПользовательИБ .СохраняемоеЗначениеПароля;

КонецФункции

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

десять + девять =