Как получить пароль пользователя 1с программно
Всем привет. Есть задача, вывести на форму поле, в которое пользователь забивает пароль пользователя, если пароль не верен, то ничего не происходит, если введенный пароль верен, то происходит чудо.
Проблема в том, что реквизит пароль у пользователя ИБ недоступен для чтения. Кто подскажет как выйти из положения?
ни как. Пароль только для записи
(1) А какая может быть альтернатива? Создавать реквизит «Пароль2», который не выводить на форму справочника Пользователи и к нему обращаться?
(2) а хз. Ты ж не говришь, какая у тебя задача. Ты рассказываешь, как ты ее решать собрался.
В этой стороне решения нет.
Хочешь подсказок, рассказывай задачу. Не хочешь рассказывать — думай сам
Есть база 1с, в базе, работают под 1 сеансом, и под одним сеансом работает несколько менеджеров.
С утра, когда приходят менеджеры, им надо создать уникальный документ, в котором отражается начало и конец смены.
По задумке, менеджер должен заполнить реквизиты документа, а потом ввести свой пароль. Если пароль пользователя совпадает, то то тогда документ записывается, если не совпадает, тогда се ля ви.
ps вспомнил, есть обработка перенос пользователей ИБ, сейчас посмотрю, они как то там хитрозадо из xml этот пароль перетаскивают.
хеш пароля
есть вот такая вот штука:
ПользователиИнформационнойБазы.ТекущийПользователь().СохраняемоеЗначениеПароля
но это не подходит, там хеш (6)
да создай ты еще один реквизит у пользователя и туда паролей нафигачь, безопасность нулевая зато получишь то что тебе надо
(4) нахрен ЭТО надо? Перестаньте ходить под одним пользователем и всё.
(7) вот хеши и сравнивай
(8) а если юзверь пароль изменит, то ему прийдется один вводить при входу, второй вводить при создании документа.
а! или у них в торговом зале один комп на всех, а продажи вы хотите считать по каждому?
(10) а как получить хеш введенной строки?
(12) да, в торговом зале один комп, пока хочу понимать, кто во сколько на работу приходит, потом будем продажи по пользователям разделять.
Гугл в помощь.
(9) тебе не понять, у обезьян один комп в торговом зале, перелогиниваться они не будут из вредности, лучше одинесника озадачить, а то он зарплату запросто так получает
(14) Прикручивай сканер отпечатков пальцев, а то вдруго ни пароли друг другу расскажут.
+(12) тогда так:
1. Пароль хранить в отдельном реквизите справочника Пользователи
2. В интерфейс вынести кнопку «Сменить пользователя»
По нажатию этой кнопки у пользователя запрашивается имя пользователя и пароль.
Если введенный пользователь есть в справочнике и пароль совпадает с тем, что в справочнике, то тогда проворачиваем всю ту же кутерьму, кторая происходит при начале работы системы в связи с установкой параметра сеанса ТекущийПользователь.
3. Добавить кнопку «Сменить пароль», кторая записывае новый пароль в справочник и в ПольователиИнформационнойБазы
4. для верности — регзадание, которое принудительно всем пользователям ИБ устанавливает пароль из справочника
При проведении документа закрывай систему ))
. пальцы тоже могут. но они могут испортиться. и их конеченое количество.
Вопрос меняется на другой. Как получить хеш введенной пользователем строки ?
(14) дай им штрихкод на телефон.
Пришел на работу, показал телефон сканеру, сканер запомнил, когда пришел этот чел на работу. Задача решена без паролей.
Да, будут передавать шриходы друг другу. Но они и пароли так же будут передавать
А штрихкоды можно ночером новые слать
(23) гуманоиды могут телефон забыть. Короче тут нужен пароль.
какое хеширование используется в пароле?
HASH / MESSAGE DIGEST АЛГОРИТМЫ
MD5 Hash
SHA1 хэш
SHA256 Хэш
SHA384 Хэш
SHA512 Хэш
RIPE MD160 Hash
Их вона как много
Хешер = Новый ХешированиеДанных(ХэшФункция.SHA256);
Хешер.Добавить(«влоарфыдлрдларфыдлвпрыдлпрвыдпы»);
точнее
СОобщить(XMLСтрока(Хешер.ХэшСумма)) — так строку получишь
(24) тупая отмазка. пароль точно также забудут. Точнее они их распечатают и под клавиатуру положат
Забыл телефон дома — пошел наиух домой за телефоном
(0) зачем все эти пароли. сделай сотрудникам бейджи со штрихкодами, пусть их сканируют при подходах
(30) спасибо!
(31) они их потеряют или сканер сломают
(27) Можно пример рабочего кода? я не понимаю без контекста (((
Пальцы надежнее и чтоб ногти только не грызли вместе с пальцами
(28) (31) (33) (35) есть такой человек — руководитель отдела продаж. У него голова как у лошади — большая. Вот пусть ей и думает.
Мое дело телячье — сделал и сдал. Потом переделал, еще заработал.
(36) Делай многофакторную авторизацию. Приложил палец — пришел штрихкод на телефон, отсканировал штрихкод. а потом еще ввод пароля.
Класс, есть типовая функция:
// Возвращает сохраняемое значение пароля для указанного пароля.
//
// Параметры:
// Пароль — Строка — пароль для которого нужно получить сохраняемое значение.
//
// ИдентификаторПользователяИБ — УникальныйИдентификатор — пользователя ИБ для которого нужно
// сравнить сохраняемое значение с полученным и результат поместить
// в следующий параметр Совпадает.
//
// Совпадает — Булево (возвращаемое значение) — см. комментарий к параметру.
// ИдентификаторПользователяИБ.
// Возвращаемое значение:
// Строка — сохраняемое значение пароля.
//
Функция СохраняемоеЗначениеСтрокиПароля(Знач Пароль,
Знач ИдентификаторПользователяИБ = Неопределено,
Совпадает = Ложь) Экспорт
даже без велосипеда все работает ))))
1С 8.3 Получить сохраненные пароли — Программист 1С Минск. Автоматизация бизнеса.
ПРИМЕРЫ КОДА 1С
Перейти в раздел примеры кода 1С 8.3:



Программно получить сохраненные пароли в базе данных 1С 8.3:
Функция Получить_сохраненные_пароли () Экспорт // из регистра
// Функция позволяет:
// получить пароль системной учетной записи 1С
// учетный данные для обмена 1С с интернет магазином
// внутренний адрес менеджера сервиса
// пароль интернет поддержки пользователей
// и другие учетные жданные 1С
ДанныеСтр = Новый Структура ();
Запрос = Новый Запрос ;
Запрос . Текст =
«ВЫБРАТЬ
| БезопасноеХранилищеДанных.Данные КАК Данные
|ИЗ
| РегистрСведений.БезопасноеХранилищеДанных КАК БезопасноеХранилищеДанных
|ГДЕ
| БезопасноеХранилищеДанных.Владелец = &Владелец» ;
//будет выведен не весь список, а по конкретному владельцу
//Запрос.УстановитьПараметр(«Владелец», Владелец);
РезультатЗапроса = Запрос . Выполнить (). Выбрать ();
Если РезультатЗапроса . Следующий () Тогда
Если ЗначениеЗаполнено ( РезультатЗапроса . Данные ) Тогда
ДанныеИзХранилища = РезультатЗапроса . Данные . Получить ();
Если ЗначениеЗаполнено ( ДанныеИзХранилища ) Тогда
ЗаполнитьЗначенияСвойств ( ДанныеСтр , ДанныеИзХранилища );
КонецЕсли;
КонецЕсли;
КонецЕсли;
Получить (через БСП) сохраненные пароли в 1С 8.3:
Процедура Получить_сохраненные_пароли_БСП ( IDподсистемы ) Экспорт
ОбщегоНазначения . ПрочитатьДанныеИзБезопасногоХранилища ( IDподсистемы , «Пароль» );
Получить сохраненные пароль и логин ИТС из базы данных в 1С 8.3:
Процедура Получить_сохраненные_пароль_и_логин_ИТС () Экспорт
Авторизация = ИнтернетПоддержкаПользователей . ДанныеАутентификацииПользователяИнтернетПоддержки ();
Логин_авторизация = «» ;
Пароль_авторизация = «» ;
Попытка
Для Каждого ЭлементАвторизации Из Авторизация Цикл
Сообщить ( ЭлементАвторизации . Ключ + » Логин» Тогда
Логин_авторизация = ЭлементАвторизации . Значение ;
Сообщить ( «Логин: » + Логин_авторизация );
ИначеЕсли ЭлементАвторизации . Ключ = «Пароль» Тогда
Пароль_авторизация = ЭлементАвторизации . Значение ;
Сообщить ( » Пароль : » + Пароль_авторизация );
КонецЕсли;
КонецЦикла;
Исключение
Сообщить ( «Регистрационные данные ИТС отсутствуют!» );
//Добавить свои данных в хранилище можно так:
//ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(ИнтернетПоддержкаПользователей.ИдентификаторПодсистемы(), «Ваш логин от ИТС», «login»);
//ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(ИнтернетПоддержкаПользователей.ИдентификаторПодсистемы(), «Ваш Пароль от ИТС», «password»);
Как получить пароль пользователя 1с программно
Продолжая тему администрирования 1С, начатую в прошлом уроке, посвященного списку пользователей в 1С, сегодня мы хотели бы обсудить основные аспекты использования паролей в 1С.

Пароли в 1С используются во множестве мест, в том числе и для ограничения доступа при входе в 1С, для запароливания модулей. Особенно хотелось бы коснуться безопасности внутренних паролей конфигурации, которые не являются стандартными и организовываются программистами для своих нужд.
Также обсудим управление паролями пользователей в 1С – как снять или поменять пароль 1С.
Авторизация – это процесс идентификации себя в программе (то есть ввода имени пользователя и пароля).
Авторизация 1С бывает двух видов:
- Обычный 1С
Чтобы войти в 1С, пользователь должен выбрать имя пользователя и ввести пароль 1С. - По пользователю Windows/домена
В настройках пользователя можно указать соответствие пользователя 1С – пользователю Windows (локальному или сетевому). Когда 1С запускается под аккаунтом этого пользователя – 1С не спрашивает пароль.

В обоих случаях у пользователя может быть задан пароль в 1С, но во втором случае он просто не используется (то есть не запрашивается у пользователя).
Подробнее про включение/отключение этого режима Вы можете почитать в уроке, посвященному управлением пользователей в 1С.
Если используется веб клиент (или тонкий клиент в режиме HTTP), то авторизация производится сложнее, так как в этом случае перед тем, как получить доступ к 1С (и авторизироваться в ней) – пользователю необходимо авторизироваться на веб сервере, который предоставляет сервис доступа к 1С.
Авторизация веб сервера может быть простая (еще один ввод имени пользователя и пароля) или сложная (различные варианты, в том числе по пользователю домена, по сертификатам и т.п.).
Сменить пароль 1С или снять пароль 1С
Пользователь может самостоятельно сменить пароль 1С (зависит от конфигурации, в большинстве типовых конфигураций это возможно).
В конфигурациях толстого клиента (старая 1С) для этого под правами пользователя нужно выбрать пункт меню Сервис/Параметры пользователя и ввести новый пароль 1С (старый пароль 1Спри этом вводить не нужно). Если этого пункта меню нет – значит он отключен администратором.

В конфигурациях тонкого клиента (новая 1С) аналогичные действия возможны если у Вас доступна закладка Администрирование. Выберите на этой закладке пункт меню (справа вверху) Настройки/Персональные настройки/Сведения о пользователе.

Если Вы сами являетесь администратором, то поменять пароль пользователя 1С можно следующими способами:
- Войти в конфигуратор, пункт меню Администрирование/Пользователи. Войти в любого пользователя и задать пароль 1С. Старый пароль 1С при этом вводить не нужно.

- (Толстый клиент) Войти в режиме предприятие, выбрать справочник пользователей (пункт меню Операции/Справочники/Пользователи), войти в пользователя, задать пароль 1С (только для тех конфигураций, которые это позволяют). Старый пароль 1С при этом вводить не нужно.

- (Тонкий клиент). Войти в режиме предприятие, закладка Администрирование, справочники Пользователи и Внешние пользователи (слева). Действия аналогичные.

Если Вы забыли свой пароль 1С, то возможно его обнулить, изучите для этого урок 1С SQL.
Пароль 1С на модуль
Самый простой способ защитить текст программ на языке 1С (текст модуля 1С) – это установить пароль 1С на доступ к модулю. Текст модуля при этом шифруется. К сожалению любой модуль защитить так нельзя.
Установить пароль 1С можно:
- Откройте в конфигураторе нужный модуль
- Пункт меню Текст/Установить пароль

Если при этом 1С заявляет, что «Данный модуль защитить нельзя», или этого пункта меню нет, значит нужно выносить функции и процедуры модуля в другой и защищать его. Запаролить как минимум можно модуль объекта и общий модуль.
Способ защиты модуля без пароля – исключить текст программы вообще. Дело в том, что текст программы перед выполнением компилируется (преобразуется в специальный нечитаемый вид). Можно убрать текст модуля, оставив только скомпилированный «код».
Для этого выберите пункт меню Конфигурация/Поставка конфигурации/Настройка поставки и выберите у нужных модулей Исключать тексты модулей. В частности это можно сделать с обработкой, а потом сохранить ее во внешнюю (правой кнопкой на обработку, Сохранить как внешнюю обработку).

Оба способа, к сожалению, обходятся распространенными в интернет декомпиляторами 1С, которые позволяют из компилированного «кода» восстановить текст программы.
Пароль для обновления 1С
При попытке обновления 1С онлайн (Конфигурация/Поддержка/Обновить конфигурацию), 1С спросит у Вас пароль доступа к сайту обновлений.
При покупке конфигурации 1С, в большой желтой коробке, кроме компакт диска и книг будет конверт с ПИН кодом. Кроме него Вам понадобиться регистрационный номер конфигурации (написан на коробке или в документах на покупку). Если по каким то причинам регистрационный номер не найден – попробуйте позвонить в тех. поддержку 1С.
Итак, найдя оба номера, зайдите на сайт 1С (http://users.v8.1c.ru/getpswbase.jsp) и самостоятельно зарегистрируйтесь. В результате Вы получите пароль для получения загрузки и установки обновлений.
Пароли на форме 1С
Иногда в процессе разработки конфигурации, программисту требуется создать механизм доступа к другой базе данных или другому ПО или просто защитить часть конфигурации дополнительным вводом пароля.
Для этого в свойствах поля ввода есть свойство Режим пароля. Поле, с установленной галочкой будет показывать звездочку (*) вместо символов при вводе.

Сам пароль при этом по умолчанию будет храниться в обычном реквизита справочника/документа, со всеми отсюда вытекающими (возможность просмотра с помощью внешней обработки или запроса к данным, просмотра в таблице SQL этого справочника).
Подробнее про организацию форм, установку свойств полей на форме и связь полей с реквизитами справочников и документов см. здесь – формы толстого клиента и тонкого клиента.
Проголосовать за этот пост:
Работа с паролями пользователей в 1С
Для того чтобы программно задать пароль пользователя в 1С, нужно сначала получить нужного пользователя информационной базы. Для этого используется метод НайтиПоИмени() менеджера пользователей информационной базы.
Пользователь = «Иванов Иван Иванович» ;
ПользовательИБ = ПользователиИнформационнойБазы . НайтиПоИмени ( Пользователь ) ;
Установка нового пароля
Для установки нового пароля пользователя 1С, его нужно записать в свойство Пароль пользователя информационной базы. Это свойство недоступно для чтения, поэтому, записав туда пароль, прочитать его уже не удастся.
ПользовательИБ . Пароль = «q12345» ;
После установки пароля свойство ПарольУстановлен пользователя информационной базы примет значение Истина. Пароль начнет работать после перезапуска системы.
Установка требований к сложности пароля в 1С
Система 1С:Предприятие имеет встроенный механизм проверки сложности паролей пользователей. Функция включается через Конфигуратор, меню Администрирование — Параметры информационной базы — Проверка сложности паролей пользователей.
При включении этой функции пароль проверяется на соответствие следующим требованиям:
- Длина не менее 7 символов;
- Содержит не менее 3-х типов символов:
-
- заглавные буквы;
- строчные буквы;
- цифры;
- спец. символы.
- Не совпадает с именем пользователя;
- Не является последовательностью символов.
Можно включить эту функцию программно:
УстановитьПроверкуСложностиПаролейПользователей ( Истина ) ;
Для проверки вводимого пользователем пароля на соответствие этим требованиям попытаемся создать временного пользователя с заданным паролем. В функцию мы будем передавать сам новый пароль. Функция будет возвращать значение Истина, если пароль соответствует требованиям, и Ложь — если не соответствует.
Функция ПарольСоответствуетТребованиям ( Пароль )
//Убедимся, что проверка сложности включена
УстановитьПроверкуСложностиПаролейПользователей ( Истина ) ;//Создадим временного пользователя и установим его параметры
ВременныйПользовательИБ = ПользователиИнформационнойБазы . СоздатьПользователя ( ) ;
ВременныйПользовательИБ . АутентификацияСтандартная = Истина ;
ВременныйПользовательИБ . Имя = НСтр ( «ru = ‘Временный пользователь'» ) +
» (» + Строка ( Новый УникальныйИдентификатор ) + «)» ;//Установим временному пользователю требуемый пароль
ВременныйПользовательИБ . Пароль = Пароль ;//Попытаемся записать временного пользователя.
//Если появится ошибка, значит пароль не соответствует требованиям
ХорошийПароль = Истина ;//Удалим временного пользователя
ВременныйПользовательИБ . Удалить ( ) ;Как программно проверить пароль пользователя 1С
Как мы уже отмечали, свойство Пароль пользователя информационной базы недоступно для чтения, то есть мы не сможем при необходимости просто сравнить пароль, введенный пользователем, с паролем, который хранится в информационной базе.
Пароль из информационной базы мы можем получить только в хешированном виде через свойство СохраняемоеЗначениеПароля пользователя ИБ.
Для проверки соответствия введенного пароля паролю из информационной базы можно использовать следующую функцию. В нее мы передадим введенный пароль и имя пользователя. Функция вернет значение Истина, если пароль соответствует паролю информационной базы, и Ложь — если не соответствует.
Функция ПроверитьПароль ( Пользователь , Пароль )
//Получим пользователя ИБ
ПользовательИБ = ПользователиИнформационнойБазы . НайтиПоИмени ( Пользователь ) ;//Получим хешированное представление введенного пароля
ХешированиеДанных = Новый ХешированиеДанных ( ХешФункция . SHA1 ) ;
ХешированиеДанных . Добавить ( Пароль ) ;
ХешированныйНовыйПароль = Base64Строка ( ХешированиеДанных . ХешСумма ) ;
ХешированиеДанных = Новый ХешированиеДанных ( ХешФункция . SHA1 ) ;
ХешированиеДанных . Добавить ( ВРег ( Пароль ) ) ;
ХешированныйНовыйПароль = ХешированныйНовыйПароль + «,» + Base64Строка ( ХешированиеДанных . ХешСумма ) ;//Сравним полученный хешированный пароль и хешем пароля в информационной базе
Возврат ХешированныйНовыйПароль = ПользовательИБ . СохраняемоеЗначениеПароля ;
