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

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

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

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

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

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

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



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

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

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

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

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



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



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



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

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


  1. Apatic
    27.01.2016 11:54
    -1

    Мне кажется, вам, скорее, на инфостарт.


    1. cruzo
      27.01.2016 12:37
      +2

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


      1. Apatic
        27.01.2016 13:11

        Да просто на инфостарте целевая аудитория гораздо больше, вот и все.


    1. dsdred
      27.01.2016 12:43
      +3

      На инфостарте есть пункт 11 правил публикаций.
      11. Запрещается публиковать программы, которые могут носить вредоносный характер при использовании злоумышленником (взлом и подбор паролей).

      Но при этом программа с помощью которой ломают файловые версии лежит на инфостарте.
      Двойные стандарты…


  1. Razaz
    27.01.2016 12:09

    А по нормальному сделать там никак? Подцепить OpenID Connect провайдера или ADFS хотя бы?


    1. Apatic
      27.01.2016 12:28

      По OpenId точно можно.


      1. Razaz
        27.01.2016 12:41

        Это OpenId, а я про OpenId Connect, это который базируется на OAuth2.


        1. mayorovp
          28.01.2016 13:24

          Уточнение: 1C работает со второй версией OpenId, а OpenId Connect — это третья.


          1. Razaz
            28.01.2016 13:33

            OpenId Connect это не OpenId вообще)) http://openid.net/connect/faq/
            Это разные протоколы. По сути OIDC — дополнение OAuth2.


            1. mayorovp
              28.01.2016 13:44

              По вашей же ссылке.

              What is the history of OpenID?
              OpenID Connect is the third generation of OpenID technology.


              1. Razaz
                28.01.2016 13:47

                Это ревизия подхода. OpenId 1 и 2 вообще никак не относятся к Connect кроме названия OpenId.


                1. mayorovp
                  28.01.2016 13:56

                  Как вы думаете, почему это самое название OpenId — общее?


                  1. Razaz
                    28.01.2016 14:01

                    Вы издеваетесь? Это разные протоколы. OpenId — мертвый протокол. OpenId Connect — расширение OAuth2. Надо было назвать OAuth2 Connect, тогда это лучше бы отражало действительность и не путало народ.
                    Но к сожалению организация срастила свое имя с протоколом. И сейчас деваться некуда.


    1. mayorovp
      28.01.2016 13:18

      Не надо соединять союзом «или» технологию и конкретную реализацию. ADFS — это реализация провайдера WS-Federation от Microsoft.


      1. Razaz
        28.01.2016 13:34

        Я написал «OpenID Connect провайдера».


        1. mayorovp
          28.01.2016 13:43

          Не надо соединять союзом «или» технологию и конкретную реализацию [другой технологии].


          1. Razaz
            28.01.2016 13:46

            OpenID Connect провайдер — указатель на систему выполняющую роль. Например Forgerock OpenAM. ADFS — кстати является OpenId Connect провайдером на 2016 серваке. Просто WS-Fed гораздо проще вкрутить если неохота разбираться.


  1. SSSerg
    27.01.2016 20:00

    Скачал на всякий случай, автор молодец.


  1. utyv
    28.01.2016 14:13

    Может кому пригодится, есть другое решение, совсем без обработок.

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

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

    Если только по каким-то причинам есть и пароль и привязка к виндовой учетке, тогда ой.


    1. dsdred
      28.01.2016 14:20

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

      Если бы Вы почитали внимательно статью то не писали то что написали…


      1. Dementor
        29.01.2016 01:24

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

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

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

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


        1. dsdred
          29.01.2016 07:38

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


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

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


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

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

          2 Диспетчер тестирования сделать не трудно кстати. Идея интересная, но это уже совсем другая обработка.


        1. utyv
          29.01.2016 08:51

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

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


          1. Dementor
            29.01.2016 10:49

            Если есть полные права, то такую галочку можно поставить в любой момент. Если прав нет, то и обработка не поможет.

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

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