Программно получить пароль пользователя 1с
Для того чтобы программно задать пароль пользователя в 1С, нужно сначала получить нужного пользователя информационной базы. Для этого используется метод НайтиПоИмени() менеджера пользователей информационной базы.
Установка нового пароля
Для установки нового пароля пользователя 1С, его нужно записать в свойство Пароль пользователя информационной базы. Это свойство недоступно для чтения, поэтому, записав туда пароль, прочитать его уже не удастся.
После установки пароля свойство ПарольУстановлен пользователя информационной базы примет значение Истина. Пароль начнет работать после перезапуска системы.
Установка требований к сложности пароля в 1С
При включении этой функции пароль проверяется на соответствие следующим требованиям:
- Длина не менее 7 символов;
- Содержит не менее 3-х типов символов:
- заглавные буквы;
- строчные буквы;
- цифры;
- спец. символы.
- Не совпадает с именем пользователя;
- Не является последовательностью символов.
Можно включить эту функцию программно:
//Установим временному пользователю требуемый пароль
ВременныйПользовательИБ . Пароль = Пароль ;//Попытаемся записать временного пользователя.
//Если появится ошибка, значит пароль не соответствует требованиям
ХорошийПароль = Истина ;Как программно проверить пароль пользователя 1С
Как мы уже отмечали, свойство Пароль пользователя информационной базы недоступно для чтения, то есть мы не сможем при необходимости просто сравнить пароль, введенный пользователем, с паролем, который хранится в информационной базе.
Пароль из информационной базы мы можем получить только в хешированном виде через свойство СохраняемоеЗначениеПароля пользователя ИБ.
//Сравним полученный хешированный пароль и хешем пароля в информационной базе
Возврат ХешированныйНовыйПароль = ПользовательИБ . СохраняемоеЗначениеПароля ;Если у пользователя установлен пароль, то в списке пользователей он отображается с пиктограммой с замком. В примере ниже у Иванова задан пароль, у Петрова нет:
В открывшемся окне нужно установить флаг Проверка сложности паролей пользователей, а также задать минимальную длину пароля:
Так как пароль должен удовлетворять следующим требованиям:
- Длина не меньше параметра Минимальная длина паролей пользователя
- В пароле должны употребляться не менее 3-х символов из перечисленных ниже:
- заглавные буквы
- строчные буквы
- цифры
- спец. символы, например нижнее подчеркивание или тире
- Пароль не должен совпадать с именем пользователя
- Пароль не должен быть последовательностью символов
Пример хорошего пароля: 123_Par
Если включена проверка сложности паролей, то регистр имеет значение.
Хранение пароля
Пароль не хранится в базе данных в открытом виде, поэтому нет возможности узнать пароль пользователя.
Алгоритм сохранения пароля следующий:
- Из строки с паролем получается хеш с помощью алгоритма SHA-1
- Полученный хеш кодируется с помощью алгоритма base64
- Первоначальная строка с паролем приводится к верхнему регистру и для нее тоже получается хеш с помощью алгоритма SHA-1
- Хеш, полученный на третьем шаге тоже кодируется с помощью алгоритма base64
- Строка, полученная на втором шаге объединяется со строкой, полученной на четвертом шаге, между ними ставится запятая. Данная строка сохраняется в базе данных.
Для проверки можно программно получить сохраненное значение пароля из базы данных, вручную сформировать строку с паролем по вышеуказанному алгоритму и сравнить их:
ТекПользователь = ПользователиИнформационнойБазы . ТекущийПользователь ( ) ; ПарольВБазе = ТекПользователь . СохраняемоеЗначениеПароля ; ДД 2 = ПолучитьДвоичныеДанныеИзСтроки ( ВРег ( Пароль ) ) ;При вводе пароля для него получается хеш, из базы данных получается сохраненный хеш и они сравниваются между собой.
Восстановление пароля
Начиная с версии платформы 8.3.15.2107 добавлена возможность восстановления пароля.
Для возможности восстановления пароля в свойствах пользователя должен быть указан адрес электронной почты, а также снят флаг Пользователю запрещено восстанавливать пароль:
В открывшемся окне нужно установить флаги Отправка кода на адрес электронной почты и Использовать стандартный сервис отправки:
После выполнения данных настроек в окне ввода логина и пароля появится гиперссылка Забыли пароль:
Если нажать на данную гиперссылку, то будет открыто окно с запросом адреса электронной почты. Нужно ввести почту и нажать кнопку Получить код:
На указанную почту придет письмо со следующим содержимым:
Нужно ввести полученный код подтверждения, указать новый пароль и нажать на кнопку Установить новый пароль:
Программа сообщит об успешной установке нового пароля:
При необходимости можно использовать свой почтовый сервер. Для этого в дополнительных настройках аутентификации нужно снять флаг Использовать стандартный сервис отправки и указать Параметры отправителя:
Там же, в настройках можно указать длину кода подтверждения, указать сколько раз можно неправильно вводить код до блокировки, а также время, через которое можно попробовать получить новый код подтверждения:
Вместо отправки кода подтверждения на почту можно использовать переход по навигационной ссылке, например на страницу в интернете:
В этом случае при нажатии на гиперссылку Забыли пароль будет выполнен переход по этой ссылке.
По нажатию будет выполнен переход по указанной ссылке. Там можно разместить какую-нибудь инструкцию пользователя по восстановлению пароля.
Если в настройках пользователя установлен флаг Пользователю запрещено восстанавливать пароль:
Аутентификация — это подтверждение, что пользователь действительно тот за кого себя выдает.
Средствами платформы аутентификация выполняется через проверку пароля пользователя.
Для включения аутентификации средствами платформы нужно в настройках пользователя установить флаг Аутентификация 1С:Предприятия:
Ниже можно указать пароль пользователя. Тогда для входа в программу нужно ввести логин и пароль:
Если у пользователя снят флаг Аутентификация 1С:Предприятия, то он не будет отображаться в списке выбора пользователей.
Аутентификация операционной системы
Аутентификация операционной системы работает только для Windows. Но если подключение выполняется через веб-сервер Apache, то аутентификация операционной системы не будет работать.
В настройках пользователя нужно установить флаг Аутентификация операционной системы и выбрать одного из пользователей операционной системы:
При запуске платформа запросит имя пользователя у операционной системы, затем проверит есть ли в списке пользователей 1С пользователь, у которого указана аутентификация операционной системы и указан текущий пользователь ОС. Если такой пользователь 1С есть, то программа будет запущена под ним без запроса логина и пароля. Если нет такого пользователя, то будет выведен стандартный диалог ввода логина и пароля (если установлен флаг Аутентификация 1С:Предприятия).
Для одного пользователя может быть одновременно включена и аутентификация средствами операционной системы и аутентификация 1С:Предприятия.
OpenID-аутентификация
OpenID-аутентификация позволяет использовать для аутентификации в 1С внешний OpenID-провайдер. OpenID-провайдером может быть как база на платформе 1С, так и внешняя система, которая реализует работу по протоколу OpenID Authentication 2.0 и расширение этого протокола, реализованное в платформе 1С.
Преимущество данной аутентификации в том, что один провайдер может использоваться для аутентификации в нескольких базах 1С. Достаточно аутентифицироваться в одной базе, чтобы в другие входить без ввода логина и пароля.
Алгоритм аутентификации через OpenID выглядит следующим образом:
Сначала опубликуем на веб-сервере OpenID-провайдер. Это будет база 1С с пустой конфигурацией:
Чтобы данную базу можно было использовать как OpenID-провайдер нужно на закладке OpenID установить флаг Использовать в качестве OpenID-провайдера и указать Время жизни аутентификации в секундах. После истечения этого времени нужно будет снова ввести логин и пароль при входе в 1С.
Откроется окно со списком всех пользователей информационной базы:
Для добавления нового пользователя нужно нажать на зеленую кнопку с плюсом. Будет открыто окно редактирования нового пользователя:
В поле Имя нужно ввести имя пользователя, которое будет показано при входе в программу, например: Иванов И.И.
В поле Полное имя нужно ввести полное имя пользователя. Оно будет отображаться в программе, например: Иванов Иван Иванович.
Для аутентификации средствами платформы 1С нужно чтобы был установлен флаг Аутентификация 1С:Предприятия. В этом случае при входе нужно будет ввести логин и пароль.
В полях Пароль и Подтверждение пароля нужно указать пароль пользователя.
Заполним данные пользователя:
Дело в том, что хотя бы один пользователь должен иметь административные права доступа, чтобы он мог создавать новых пользователей и задавать для них права доступа.
Роли и права доступа мы рассмотрим позднее, пока просто создадим одну роль Полные права, указав для нее максимально возможные права доступа.
Дважды щелкнув по роли, откроем окно настроек прав доступа для данной роли:
И сохраним конфигурацию базы данных.
Вернемся к настройке пользователя и на закладке Прочее установим флаг рядом с ролью Полные права в списке доступных ролей и нажмем ОК:
И добавим еще одного пользователя:
Теперь при входе в базу нужно выбрать пользователя и ввести его пароль:
Значит пользователя с таким именем нет в базе данных или введен неверный пароль.
Для удаления пользователя нужно выделить его в списке пользователей и нажать на кнопку с красным крестом:
Список пользователей хранится в специальной таблице базы данных.
Показывать в списке выбора
В настройках пользователя есть флаг Показывать в списке выбора:
Если данный флаг установлен, то пользователь будет доступен для выбора при входе в программу. Если снять этот флаг, то пользователя не будет в списке выбора, но можно будет ввести его имя вручную и войти под ним. Это можно использовать, чтобы скрыть администратора системы.
Например, создадим нового пользователя Администратор и снимем у него флаг Показывать в списке выбора:
Теперь при входе в базу пользователь не будет в списке доступных пользователей:
Но можно вручную ввести его логин и пароль и войти под ним:
Защита от опасных действий
Потенциально опасными действиями считаются:
- Загрузка внешней обработки или отчета
- Подключение расширения
- Обновление конфигурации
- Выполнение команды операционной системы из внешней обработки/отчета или расширения
- Программное добавление или удаление пользователей из внешней обработки/отчета или расширения
- Загрузка внешней компоненты из внешней обработки/отчета или расширения
- Использование COM-объекта из внешней обработки/отчета или расширения
Если в свойствах пользователя установлен флаг Защита от опасных действий:
Если нажать Нет, то внешняя обработка не будет открыта.
Если нажать Да, то внешняя обработка будет открыта и платформа запомнит, что данное действие было разрешено. При последующих открытиях этой же обработки предупреждения не будет. Платформа запоминает разрешение для хэша обработки. Если в дальнейшем обработка будет изменена, то при первом открытии обработки снова будет выдано предупреждение безопасности.
Активные пользователи
Будет открыт список активных пользователей:
Текущий пользователь выделен специальной пиктограммой с галочкой.
В открывшемся окне нужно установить флажок Режим технического специалиста:
После этого в главном меню выбрать Функции для технического специалиста:
В открывшемся окне в узле Стандартные нужно найти пункт меню Активные пользователи:
По двойному клику будет открыто окно с активными пользователями. Текущий пользователь будет выделен жирным шрифтом:
Если база клиент-серверная, то можно запустить утилиту для администрирования серверов 1С предприятие. Для этого в меню пуск нужно найти соответствующий пункт меню:
В открывшемся окне нужно в списке информационных баз найти нужную базу, развернуть ее и выбрать пункт Сеансы:
Справа будут показаны все активные сеансы с текущей базой:
Если нужно просто узнать текущего пользователя, то он отображается в правом верхнем углу:
Завершение работы пользователей
Чтобы завершить работу пользователей в 1С можно воспользоваться утилитой для администрирования серверов. Данный вариант подойдет только для клиент-серверных баз. В списке сеансов нужно выделить нужного пользователя и выбрать команду Удалить:
Чтобы выгнать всех пользователей из базы нужно нажать ctrl+A, чтобы выделить всех пользователей. А потом выбрать в контекстном меню команду Удалить.
В конфигурациях на базе БСП, в списке активных пользователей есть кнопка Завершить сеанс, которая позволяет завершить сеанс пользователя:
Чтобы выкинуть всех пользователей из файловой базы можно завершить их процессы операционной системы. Этот вариант подойдет если все пользователи работают на одном компьютере. Нужно запустить диспетчер задач (ctrl + alt + Del), на закладке Процессы найти все процессы 1С и завершить их, выбрав в контекстном меню Снять задачу:
Программная работа с пользователями
Создать нового пользователя
Управление пользователями информационной базы выполняется с помощью объекта ПользователиИнформационнойБазы.
Для добавления нового пользователя нужно вызвать метод СоздатьПользователя у данного объекта. Затем заполнить все необходимые поля и записать пользователя в базу методом Записать:
НовыйПольз = ПользователиИнформационнойБазы . СоздатьПользователя ( ) ; ЗащитаОтОпасныхДействий = Новый ОписаниеЗащитыОтОпасныхДействий ; ЗащитаОтОпасныхДействий . ПредупреждатьОбОпасныхДействиях = Истина; НовыйПольз . ЗащитаОтОпасныхДействий = ЗащитаОтОпасныхДействий ; НовыйПольз . Роли . Добавить ( Метаданные . Роли . ПолныеПрава ) ;В результате будет добавлен новый пользователь:
Получить всех пользователей
Всех пользователей можно получить с помощью метода ПолучитьПользователей. Данный метод вернет массив объектов типа ПользовательИнформационнойБазы:
ВсеПользователи = ПользователиИнформационнойБазы . ПолучитьПользователей ( ) ;Поиск пользователей
Найти пользователя можно или по имени или по идентификатору. Для поиска используются методы НайтиПоИмени и НайтиПоУникальномуИдентификатору:
НайдПольз = ПользователиИнформационнойБазы . НайтиПоИмени ( "Сидоров С.С." ) ; УИДПользователя = Новый УникальныйИдентификатор ( "0c3c8e07-c36a-41ce-977a-85ee65d03a00" ) ; НайдПольз = ПользователиИнформационнойБазы . НайтиПоУникальномуИдентификатору ( УИДПользователя ) ;Удаление пользователя
Для удаления пользователя используется метод Удалить:
НайдПольз = ПользователиИнформационнойБазы . НайтиПоИмени ( "Сидоров С.С." ) ;Текущий пользователь
Чтобы программно получить текущего пользователя можно воспользоваться методом ТекущийПользователь:
ТекПользователь = ПользователиИнформационнойБазы . ТекущийПользователь ( ) ;Блокировка установки сеансов
Клиент-серверный вариант
Иногда требуется на некоторое время заблокировать вход пользователей в базу. Это можно сделать с помощью механизма установки блокировки сеансов пользователей. Блокировка настраивается через утилиту администрирования серверов 1С. В списке информационных баз нужно найти нужную базу и в контекстном меню выбрать пункт Свойства:
В поле с администратором информационной базы нужно ввести логин и пароль пользователя 1С:
Блокируются как пользовательские сеансы, так и конфигуратор. При этом, существующие сеансы смогут продолжить работать.
При необходимости можно задать код разрешения, указав который можно войти даже при включенной блокировке. Код указывается в параметре Код разрешения:
Данный код указывается в свойствах базы в параметре Дополнительные параметры запуска после ключа /UC. Чтобы открыть свойства базы нужно в списке баз выделить нужную базу и нажать кнопку Изменить:
Теперь в данную базу можно войти даже во время блокировки.
Чтобы снять блокировку до ее окончания нужно просто снять флаг Блокировка начала сеансов включена.
Читайте также: