Как получить пароль пользователя 1с программно
Перейти к содержимому

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

  • автор:

Как получить пароль пользователя 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С

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Изменение паролей пользователей информационных баз 1С ранее представляло некоторую сложность. Администратору приходилось вручную менять пароль пользователя, забывшего свои учётные данные. При переходе на удалённую работу мы проводили опрос на «Зазеркалье» и на партнёрском форуме, в котором пользователи и партнёры высказали пожелания, что нужно сделать процесс изменения паролей более удобным. В результате мы добавили новую процедуру восстановления пароля пользователей файловых и серверных информационных баз.

    Изменения формы аутентификации

    Теперь на формы аутентификации тонкого, толстого и веб-клиентов можно добавить кнопки «Забыли пароль?» и «Нужна помощь», настроив отображение в параметрах информационной базы. Обновлённая форма выглядит так:

    img-01.png

    Как проходит процедура восстановления пароля

    При нажатии на кнопку «Забыли пароль» выполняется одно из трёх действий:

    • Переход по ссылке;
    • Отправка e-mail с кодом восстановления пароля из стандартного сервиса 1С;
    • Отправка e-mail с кодом восстановления пароля с любого SMTP-сервера, адрес которого настраивает администратор.

    Первый вариант позволит администратору или партнёру самостоятельно настроить любое поведение при восстановлении пароля. В этом случае при нажатии на кнопку «Забыли пароль?» открывается страница браузера, указанная в настройках информационной базы.

    Вариант с использованием стандартного сервиса 1С даст возможность запустить механизм восстановления паролей с минимальными усилиями. В этом случае пользователю отображается форма для ввода e-mail.

    img-02.png

    Если указанный адрес обнаружен, то при нажатии на кнопку «Получить код» пользователю отображается новая форма для смены пароля:

    img-03-02.png

    После ввода корректного кода пользователь сможет установить новый пароль.

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

    Вариант отправки e-mail с кодом восстановления по указанным параметрам SMTP аналогичен использованию стандартного сервиса 1С. Только письмо идёт не с почтового сервиса 1С, а с SMTP-сервера, который настроил администратор (в том числе, и корпоративного). Такой вариант, в том числе, позволяет настроить индивидуальный текст и оформление письма.

    Если вами используется OpenID-аутентификация, то при любом варианте изменение пароля будет выполняться на провайдере, т.к. именно в нём проходит аутентификация. После изменения пароля происходит переход на форму аутентификации в провайдере.

    Кнопку «Нужна помощь» можно использовать, чтобы указать адрес сайта с информацией о том, что делать, когда пользователь не может зайти, забыл логин, или вообще не зарегистрирован в информационной базе (куда звонить или писать, где регистрироваться и т.д.).

    Как изменить настройки аутентификации

    Менять настройки аутентификации можно из конфигуратора и из встроенного языка.

    В конфигураторе в меню «Администрирование» добавлен новый пункт «Дополнительные настройки аутентификации»:

    img-04.png

    Реализован широкий набор настроек поведения (на скриншоте ниже). В том числе можно редактировать текст отправляемого письма.

    img-05.png

    Во встроенном языке в глобальный контекст добавлен новый объект ДополнительныеНастройкиАутентификации (AdditionalAuthenticationSettings). Пример изменения настроек аутентификации приведен ниже:

    НастройкиВосстановленияПароля = Новый НастройкиВосстановленияПаролей();
    НастройкиВосстановленияПароля.СпособВосстановленияПароля =
    СпособВосстановленияПароляПользователяИнформационнойБазы.ПереходПоНавигационнойСсылке;
    НастройкиВосстановленияПароля.ПользовательSMTP mailto:admin@1c.ru»>admin@1c.ru»;
    НастройкиВосстановленияПароля.ПарольSMTP = «123»;
    НастройкиВосстановленияПароля.ПортSMTP = 465;
    НастройкиВосстановленияПароля.ИспользоватьSSL = Истина;
    НастройкиВосстановленияПароля.ИмяОтправителя = «Администратор»;
    НастройкиВосстановленияПароля.Заголовок = «Восстановление пароля»;
    НастройкиВосстановленияПароля.ТекстСообщенияHTML = » Введите код
    | &VerificationCode для сброса пароля. «;
    ДополнительныеНастройкиАутентификации.УстановитьНастройкиВосстановленияПароля( НастройкиВосстановленияПароля);

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

    img-06-02.png

    Кроме того, во встроенном языке для изменения настроек пользователя в тип данных ПользовательИнформационнойБазы добавлены новые свойства: АдресЭлектроннойПочты, ЗапрещеноВосстанавливатьПароль, которые позволяют настраивать соответствующие параметры.

    События изменения пароля пользователя и неуспешные попытки записываются в журнал регистрации. Для этого в события изменения пользователя добавлена регистрация полей «адрес электронной почты» и «пользователю запрещено восстанавливать пароль».

    Можно ли получить пароли и логины пользователей

    Был файл с сохраненными логинами и паролями на случай если что-то нужно было проверить или настроить под пользователем, так получилось что из-за аварии эти данные потерялись. Можно ли получить пароли пользователей программно или надо анкетировать юзверей )))?

    По теме из базы знаний

    • Гарри Поттер и подкапотное пространство веб-клиента
    • Разработка гибридного web-приложения на 1С, возможности и ограничения
    • HTTP сервис – друг или враг?
    • История одного взлома или проверьте вашу систему на безопасность
    • Чем Service Discovery поможет 1С-нику и его клиентам?
    • Дата
    • Дата
    • Рейтинг всех уровней
    • Рейтинг 1-го уровня
    • Древо развёрнутое
    • Древо свернутое

    Свернуть все
    3. nomad_irk 68 19.09.22 14:00 Сейчас в теме
    (1)Можно получить HASH пароля, сам пароль — проще спросить у пользователя.
    4. Prikum 3 19.09.22 14:03 Сейчас в теме

    (1)к выше сказанному, есть обработки, которые позволяют не знаю пароля (не меняя) пользователя заходить под ним в базу.

    7. laperuz 45 20.09.22 04:52 Сейчас в теме

    (1)У меня тут 2 года на инфостарте лежала обработка, которая получала хэши паролей пользователей, загружала на hashes.com и выводила, если смогла подобрать, администратору эти пароли. Но недавно ее удалили, мотивировав тем, что удаляют с инфостарта все подобные обработки(

    Так что можно вручную попробовать это все проделать.

    2. user1831019 19.09.22 13:52 Сейчас в теме
    Пароли в базе не хранятся.
    5. user686924_shipikVV 19.09.22 15:02 Сейчас в теме
    Можно сбросить их пароли.
    6. soft_wind 19.09.22 15:29 Сейчас в теме

    присоединяюсь к (4) сами как раз пользуемся таким методом, очень удобно,
    нажал на кнопку/иконку ВходПодПользователем, набрал/ввел ИмяПользователя и вошел
    правда в этом методе, у тебя должны быть Административные права, но это и логично.

    8. skela 2 20.09.22 07:38 Сейчас в теме
    ВходПодПользователем
    можно по подробнее
    9. kras01 20.09.22 10:08 Сейчас в теме
    (8) В ИР портативные есть такой инструмент, посмотрите на скрине
    Прикрепленные файлы:
    12. tormozit 7089 05.04.23 21:33 Сейчас в теме
    (9) Точнее УИР
    13. пользователь 05.04.23 23:09
    Сообщение было скрыто модератором.
    14. tormozit 7089 06.04.23 11:36 Сейчас в теме
    (9) Хотя и в ИР тоже есть, но на твоей картинке УИР.
    10. soft_wind 20.09.22 10:14 Сейчас в теме

    (8) где-то в инете нашел такой код, адаптировал под свою форму Консоли Запросов (для программиста самая главная обработка, туда и добавляю интересный функционал)

    НаКлиенте, после получиния ИмениПользователя (его логин)

    Если ПустаяСтрока(ПользовательПод) Тогда Возврат; КонецЕсли; ДанныеПользователя = НайтиПользователяНаСервере(ПользовательПод); Если ЗначениеЗаполнено(ДанныеПользователя) Тогда ПараметрыКоманднойСтроки = "/N" + Символ(34) + ДанныеПользователя.Имя + Символ(34) + " /P" + ДанныеПользователя.НовыйПароль; ЗапуститьСистему(ПараметрыКоманднойСтроки, Ложь); ПодключитьОбработчикОжидания("ВосстановитьПользователя", 10, Истина); Иначе ПоказатьПредупреждение(,"Не найден Пользователь: " + ПользовательПод, 20); КонецЕсли;

    функция получения пользователя и сброса его старого пароля (с запоминанием)

    &НаСервереБезКонтекста Функция НайтиПользователяНаСервере(ИмяПользователя) ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(ИмяПользователя); Если ПользовательИБ = Неопределено Тогда Возврат Неопределено; КонецЕсли; лкДанные = Новый Структура; лкДанные.Вставить("СохраняемоеЗначениеПароля",""); лкДанные.Вставить("Имя",ПользовательИБ.Имя); лкДанные.Вставить("АутентификацияСтандартная",ПользовательИБ.АутентификацияСтандартная); ПользовательИБ.АутентификацияСтандартная = Истина; лкДанные.Вставить("СохраняемоеЗначениеПароля",ПользовательИБ.СохраняемоеЗначениеПароля); лкДанные.Вставить("НовыйПароль","Запуск1С"); ПользовательИБ.Пароль = "Запуск1С"; ПользовательИБ.Записать(); Возврат лкДанные; КонецФункции

    и функция восстановления старого пароля пользователя

    &НаСервереБезКонтекста Процедура ВосстановитьПользователяНаСервере(ДанныеПользователя) ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(ДанныеПользователя.Имя); Если ПользовательИБ <> Неопределено Тогда ПользовательИБ.АутентификацияСтандартная = ДанныеПользователя.АутентификацияСтандартная; ПользовательИБ.СохраняемоеЗначениеПароля = ДанныеПользователя.СохраняемоеЗначениеПароля; ПользовательИБ.Записать(); КонецЕсли; КонецПроцедуры

    отлажено под работу в локальной сети, что-то переделано, что-то упрощено, попробуйте может подойдет и вам «как есть»

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

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