Обработка временной или постоянной замены пароля Аутентификации 1С: Предприятия 8.2-8.3

Простенькая обработка на управляемых и обычных формах под платформу 8.2-8.3, позволяющая сменить пароль Аутентификации 1С: Предприятия и вернуть обратно. Будет полезна администраторам, программистам, связанным с 1С.

Недавно столкнулся с проблемой, которая потребовала простенького решения. Собственно, проблему можно уместить в один вопрос: как помочь пользователю, не зная и не сбрасывая его пароль?

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

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

Я перерыл просторы интернета, нашел кучу описаловок как ломать пароли в файловой БД или в серверных версиях.
В случае с файловой версией не нужно ни каких прав достаточно установить программу просмотра файлов баз *.1CD и меняем пароли в таблице V8USERS. Стоит заметить, что пароли там хранятся не в чистом виде, а хранится хеш пароля. Собственно хеш неизвестного пароля меняется на хеш известного пароля. В случае серверных баз нужно знать логин администратора БД и там уже дело не хитрое поменять пароль. Но как объяснить пользователю ошибку аутентификации после таких взломов? Да и к чему такие трудности?

Нашел так же обработку, которая подбирает пароли при этом требует такие же права как и моя обработка. Ну подбирает пароль 123 или даже 123456 она быстро, а что если пароль настоящий? Она пишет около 90 дней буду подбирать. Это не в какие ворота! Может выйти такая ситуация, пока подбирали пароль, пользователь сменил пароль. Да еще и не 1 раз может сменить.

В общем предлагаю небольшую обработку, которая меняет хеш неизвестного пароля на хеш желаемого пароля, а затем подменяет обратно. Работает она как в Управляемых формах, так и под обычные формы. Может быть встроена через «дополнительные обработки и отчеты», процедура в модуль объекта с описанием обработки добавлена.



Ну или можно встроить через «Расширения конфигурации» — очень полезная возможность, на данный момент позволяет добавлять обработки и отчеты в конфигурацию не снимая ее с поддержки. То есть типовая конфигурация остается типовой даже при добавлении обработки.

Принцип работы:

По пользователю получаем хеш пароля.

//Пользователь элемент справочника Пользователи
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(Пользователь.ИдентификаторПользователяИБ);
//СохраняемоеЗначениеПароля хранит хеш пароля
ПарольПользователя = ПользовательИБ.СохраняемоеЗначениеПароля;
//Имя хранит логин пользователя
ЛогинПользователя = ПользовательИБ.Имя;

Вводим желаемый пароль и получаем его хеш.



Меняем хеш пользователя на хеш желаемого пароля.



Входим в систему под новым паролем. Меняем все обратно.



Ссылка на скачивание обработки

Комментарии 24

    –1
    Мне кажется, вам, скорее, на инфостарт.
      +2
      Сейчас закидают минусами, но я все же скажу. Ребята, если вы считаете, что массовость статей на тему web, desktop, mobile программирования задает правила написания статей для авторов, то, возможно, вы забыли что такое Хабр. Цитата с Википедии: «Хабраха́бр (он же Хабр) — многофункциональный сайт, представляющий собой смешение новостного сайта и коллективного блога (специализированная пресса), созданный для публикации новостей, аналитических статей, мыслей, связанных с информационными технологиями, бизнесом и Интернетом[2]. „
        0
        Да просто на инфостарте целевая аудитория гораздо больше, вот и все.
        +3
        На инфостарте есть пункт 11 правил публикаций.
        11. Запрещается публиковать программы, которые могут носить вредоносный характер при использовании злоумышленником (взлом и подбор паролей).

        Но при этом программа с помощью которой ломают файловые версии лежит на инфостарте.
        Двойные стандарты…
        0
        А по нормальному сделать там никак? Подцепить OpenID Connect провайдера или ADFS хотя бы?
          0
          По OpenId точно можно.
            0
            Это OpenId, а я про OpenId Connect, это который базируется на OAuth2.
              0
              Уточнение: 1C работает со второй версией OpenId, а OpenId Connect — это третья.
                0
                OpenId Connect это не OpenId вообще)) http://openid.net/connect/faq/
                Это разные протоколы. По сути OIDC — дополнение OAuth2.
                  0
                  По вашей же ссылке.

                  What is the history of OpenID?
                  OpenID Connect is the third generation of OpenID technology.
                    0
                    Это ревизия подхода. OpenId 1 и 2 вообще никак не относятся к Connect кроме названия OpenId.
                      0
                      Как вы думаете, почему это самое название OpenId — общее?
                        0
                        Вы издеваетесь? Это разные протоколы. OpenId — мертвый протокол. OpenId Connect — расширение OAuth2. Надо было назвать OAuth2 Connect, тогда это лучше бы отражало действительность и не путало народ.
                        Но к сожалению организация срастила свое имя с протоколом. И сейчас деваться некуда.
            0
            Не надо соединять союзом «или» технологию и конкретную реализацию. ADFS — это реализация провайдера WS-Federation от Microsoft.
              0
              Я написал «OpenID Connect провайдера».
                0
                Не надо соединять союзом «или» технологию и конкретную реализацию [другой технологии].
                  0
                  OpenID Connect провайдер — указатель на систему выполняющую роль. Например Forgerock OpenAM. ADFS — кстати является OpenId Connect провайдером на 2016 серваке. Просто WS-Fed гораздо проще вкрутить если неохота разбираться.
            0
            Скачал на всякий случай, автор молодец.
              0
              Может кому пригодится, есть другое решение, совсем без обработок.

              Если пользователь использует аутентификацию по паролю, можно включить ему аутентификацию Windows, причем указать свою собственную учетную запись домена. Вуаля — входим под его именем. Главное не забыть потом вернуть все обратно.

              Если пользователь использует аутентификацию Windows, и ему не присвоен пароль, мы можем временно назначить свой пароль и войти.

              Если только по каким-то причинам есть и пароль и привязка к виндовой учетке, тогда ой.
                0
                Не катит твое «решение».
                1 Пользователи и вообще у многих используют аутентификацию винды.
                2 По мимо клиента обычного используют мобильного.
                3 Кстати если что бесшовная интеграция да и все вэб сервисы кстати используют Аутентификацию 1С: Предприятия.

                Если бы Вы почитали внимательно статью то не писали то что написали…
                  0
                  utyv ничего не пишет про универсальность: «Может кому пригодится, есть другое решение, совсем без обработок.»

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

                  По поводу вашей обработки. Интересно. Ранее правил хеши вручную, а потом возвращал назад. Возьму вашу идею на вооружение.

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


                    Ну наверное в конторах с файловой версией и с небольшим количеством пользователей 1С и с отсутствующим штатным администратором и программистом 1с действительно так. Я в маленьких конторах не работал, только подрабатывал.

                    Но думаю, что обработку можно сделать более удобной. Ведь в вашей реализации все еще нужно вручную запускать новую сессию, не потерять старый хеш, не забыть вернуть пароль… Но ведь можно по нажатию на кнопку сменить хеш, запустить второй сеанс под нужным пользователем/паролем и тут же сменить пароль на предыдущий. А если на форму выбросить целую табличку пользователей, то можно получить диспетчер тестирования (если лицензий на все сеансы хватит).


                    Да тут вы правы можно сделать удобней. Моя обработка лишь показывает принцип как это делается, ну и удовлетворяет мои «хотелки».Поэтому я и написал «простенькая обработка». А так даже типовые 1с обработки под себя приходится пилить.

                    По поводу предложенного:
                    1 Получается надо добавить чекбокс «Запускать клиент из обработки». Данный чек бок делает видимым/доступным либо выбор из списка либо переключатель на доступные значения:
                    -Конфигуратор
                    -Клиент
                    На ту же кнопку весим проверку и процедуру запуска вышеописанного.

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

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

                        Ну наверное в конторах с файловой версией и с небольшим количеством пользователей 1С и с отсутствующим штатным администратором и программистом 1с действительно так. Я в маленьких конторах не работал, только подрабатывал.

                        Не поверишь, как раз на серверных базах в средних торговых компаниях, у которых были в штате администратор и иногда собственные 1С-программисты :) Через AD удобнее заниматься администрированием списка пользователей и нет проблемы маленьких компаний, когда все подряд заходят под учеткой человека, который уволился еще несколько лет назад, а потом по журналам регистрации не найти крайних. И кстати, для маленьких компаний поднять и обслуживать домен обычно кишка тонка.

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

                Самое читаемое