Сквозная доменная авторизация в 1С 7.7

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

Данная разработка является попыткой реализовать сквозную Windows авторизацию пользователей.

LogonTo1C.

Утилита предназначена для сквозной авторизации доменных пользователей в 1С 7.7.
Как это работает:
LogonTo1C запускает исполняемый файл 1Cv7s.exe, ожидает появления окна авторизации,
скрывает его и замораживает поток. Из памяти процесса 1С считывается путь к выбранной базе.
Дальше происходит разбор файла users.usr. Получение списка пользователей и наборов прав.
Из списка отбираются те пользователи 1С, имя учетной записи которых начинается с доменного имени пользователя.
Если ни одного подходящего имени пользователя не найдено, то выводится сообщение об ошибке и процесс 1С закрывается.
Если найдено несколько подходящих учетных записей, то пользователю предлагается выбрать из списка нужный набор прав.

Если выбран набор прав или нашлась единственная подходящая учетная запись, то процесс 1С размораживается,
отключается проверка пароля 1С,
в скрытом окне авторизации происходит подстновка нужной учетной записи и подтверждается вход.
Процесс 1С освобождается и продолжает работу в штатном режиме.

Что это дает:
Плюсы:
— Обеспечивается сквозная авторизация в 1С.
— Исключается возможность входа пользователя под чужой учетной записью 1С.
— Исключается необходимость ввода пароля при доменой авторизации.
———————-
+ Не требует установки.
+ Файлы 1С не изменяются никаким образом.

Минусы:
— Необходимо изменить список пользователей ,что не всегда удобно.
— Отключается проверка пароля 1С.

Как это заставить работать:
 Требуется SQL версия 1С 7.7 (тестировалось на 27 релизе).

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

1. Список пользователей изменяется таким образом, чтобы имена учетных записей 1С соответствовали доменным именам. В случае наличия у одного пользователя нескольких учетных записей требуется добавить к имени индекс (1,2,3 и т.д.).
2. В папку BIN платформы 1С добавляется исполняемый файл LogonTo1C.
2а. в случае использования LogonTo1C_bin.exe, файл 1Cv7s.exe переименовывается в 1Cv7s.bin, а LogonTo1C_bin.exe в 1Cv7s.exe.
4. Ярлык 1С меняется на ярлык LogonTo1C.
5. В случае Windows Server 2008 утилиту нужно запускать «с правами админстратора». (собственно, то же самое требуется самой 1С).

Как это выглядит для пользователя:
При запуске 1С происходит либо непосредственно вход в базу либо выбор набора прав в окне,
напоминающем окно авторизации 1С.

Даная версия утилиты распространяется бесплатно. Запрещено коммерческое использование без уведомления автора.

С уважением, MadDAD.
 

40 Comments

  1. MadDAD

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

    Данная разработка является попыткой реализовать сквозную Windows авторизацию пользователей.

    Перейти к публикации

    Reply
  2. Famza

    Плюс.

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

    Согласно http://www.1c.ru/news/info.jsp?id=15011 все повально идем на 8ку — мож скоро снимут 7ку и с поддержки

    Reply
  3. shurix

    Famza, не соглашусь с вами.

    Смешно звучит, но есть еще ряд организаций, в которых только начинается внедряться 1С 7.7, переходя с допотопного самописного ПО на Foxpro 2.6.

    Выбор падает на 7ку исключительно из-за того, что на 50+ пользователей лицензирование 1С 8 эти конторы просто не потянут. И реализовать в данном случае доменную авторизацию сам Бог велит 😉

    Так что это однозначно полезный «костыль».

    Reply
  4. Famza

    (2) shurix, (3) fort13, на счет «долго жить» не факт — и я сам знаю немало тех, у кого все только начинается и именно с 7ки. Но дебаты на эту тему можно долго продолжать.

    (2) shurix, у меня что-то не стыкуется

    Выбор падает на 7ку исключительно из-за того, что на 50+ пользователей лицензирование 1С 8 эти конторы просто не потянут. И реализовать в данном случае доменную авторизацию сам Бог велит 😉

    Те, бабла поднять домен более на 50+ юзеров хватает, а на 8ку — нет? Ну да, варез дешевле… )))

    Reply
  5. shurix

    (4) Famza, наверное, но не стоит никого зря обвинять в пиратстве и других нарушениях закона. С чего вы взяли, что у нас в бюджетной организации домен поднят именно на «варезе»?

    Может у нас в качестве рабочих мест используются бесдисковые станции на базе ThinStation или WTWare, которые коннектяться к терминальному серверу Windows 2008R2 Standard, а AD эмулируется при помощи DSfW (Domain Services for Windows) на базе Новелловского Open Enterprise Server? А если вместо CAL от Майкрософт используется ViTerminal? Или вообще на терминальном сервере вместо Windows установлен Linux, а 1С7.7 запускается через WINE?

    Или самый банальный вариант: в свое время Windows лицензировали, а потом на закупку 1С8 (на нужное кол-во пользователей) достаточно средств выделять не хотели, поэтому выбор и пал на 1С7? Такое вам в голову не приходило.

    Поэтому давайте не будем зря бросаться беспочвенными обвинениями. Договорились? 😉

    Reply
  6. Famza

    (5) fort13, нам уже давно не хватает, хотя и доделано многое. 7ка просто проще и в обслуживании и во внедрении, но многие моменты уже решены в типовых конфах 8ки, да и возможности гораздо шире… как и прожорливость любых ресурсов и денег — тут я согласен.

    (6) shurix, где обвинение в пиратстве? А варезом все когда-нибудь пользовались, если нет — можешь кинуть в меня спецсмалом. )))

    На счет выборов ПО — тут можно много и долго обсуждать — и вариантов куча. Че демагогить-то?

    Reply
  7. poyson

    Спасибо. очень помогло. +1

    Reply
  8. bdsmka

    Забыли (или не подумали), дописать об установке NTFS прав на каталоги пользователей.

    При вашей настройке можно принести флешку с портабельной 7-кой и зайти под любым пользователем без пароля.

    Reply
  9. MadDAD

    (9) Не совсем понял комментарий. Какая моя настройка? Это отдельная утилита, и рассчитана она на работу в домене, где аутентификация пользователя реализуется контроллером домена.

    Если принести портабельную 7 со сломанной авторизацией то никакие настройки прав доступа к каталогам пользователей не помогут.

    Reply
  10. bdsmka

    Если запустить ярлык 7-ки с обычной авторизацией, вывалятся все пользователи — и можно зайти под любым. Дынный костыль лишь подставляет имя авторизованного пользователя домена (он не производит NTLM аутентификацию пользователя)!

    А вот если пользователю дать права только на свою папку Usersпользователь, то он и сможет зайти только под собой. В конфигураторе нужно строго указать каталог для каждого пользователя

    Reply
  11. MadDAD

    (11) bdsmka, Именно так. Смысл проводить авторизацию отсутствует, т.к. пользователь уже авторизован в системе. Поэтому подставляем имя текущего пользователя и выключаем проверку пароля.

    Ограничение доступа к каталогу это дополнительная мера безопасности. На усмотрение системного администратора.

    У этой утилиты другая функция. Злоумышленник с платформой на флешке войдет в систему даже при отсутствии прав на каталог пользователя, поэтому говорить о безопасности 7.7 смысла нет.

    Reply
  12. byos

    При запуске из под отсутствующего пользователя виснет на окне авторизации.

    Окно с ошибкой все-таки появляется, но за зависшим окном авторизации его не видно, пока на него не переключишься вручную и это не удобно тк надо еще догадаться, что за зависшим окном авторизации есть сообщение об ошибке пользователя это исправимо как то? (так в win 2008 и 2012, в 2003 все ок)

    и еще такой вопрос, можно передавать управление 1с не файлу 1cv7s.exe, а другим, например 1cTrade.exe и тд?

    Reply
  13. MadDAD

    (13)

    1. Тестировал на WinServer 2008, не уверен что смогу найти исходники, но постараюсь поправить.

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

    А окно авторизации не прячется а зависает?

    Reply
  14. byos

    (14) в 2008 r2 окно авторизации зависает, а за ним (точнее за сплешем 1с7) прячется ошибка об отсутствии пользователя, в 2012 r2, окно авторизации не появляется, а сообщение с ошибкой прячется за сплешем 1с7, и тоже не появляется на переднем плане, если не сложно подправьте пожалуйста, это доработка 1с как раз то что нужно.

    версия и релиз один — 27

    пробовал как параметр указать LogonTo1C.exe «name».exe все равно запускает 1cv7s.exe, может букву надо как параметр указывать какую?

    заранее спасибо

    Reply
  15. MadDAD

    (15) byos,

    Версия обновлена.

    1. Если пользователь не обнаружен в списке то сначала закрываtтся процесс 1С, потом показывается уведомление. Для уведомления установлен флаг «TopMost», т.е. поверх всех окон, модальное.

    2. для запуска используется по умолчанию 1cv7s.exe, или то что указано первым параметром, без ключей.

    Нюанс: параметры запуска не передаются стратеру 1С. Если это нужно — сделаю. Исходники нашлись.

    Reply
  16. byos

    (16) Проверил, все работат как написано, спасибо

    Reply
  17. CheBurator

    У коллеги vcv в профиле есть стартер, который позволяет реализовать для 7.7 виндовз-авторизацию.

    данное решение — выглядит немножко «перегруженным» — слишком много всего надо соблюсти и состыковать. а на стыках — всегда «рвется».

    .

    имхо конечно

    Reply
  18. MadDAD

    (18) CheBurator, к сожалению не нашел у vcv такого стартера, можно ссылку на публикацию?

    Да и стыковать особо ничего не надо. Нужно всего лишь обозвать в 1С юзеров так же как в домене.

    Reply
  19. vcv

    (18) CheBurator, Напутал немножко. Это не у меня. У кого-то такой стартер действительно пробегал, но никак не вспоминается у кого.

    Я пользуюсь древним патчем NtUser. Он, конечно, патч и по этому лицензионно нечист, но работает отлично.

    Кому надо, берите отсюда (http://1drv.ms/1uozwqT) что бы не искать по инету.

    Reply
  20. MadDAD

    (20) vcv, (18) CheBurator, Нашел. Это стартертоварища vde69, но у него требуется доработка конфигурации, так что, только ради внедрения прозрачной авторизации проще все таки использовать мой костыль.

    По сути, оно работает так же как и в патче от Ромикса, из предыдущего коммента. Тольк патч происходит в памяти процесса 1С, и не используется сопоставление имен.

    Reply
  21. byos

    Выявилось ограничение, при тестировании все отлично работало, но не был учтён момент ограничения имени в 1с, а это только буквы и цифры, при тестировании использовались имена вида — test, ivanov и тд, а реальные имена имеют вид ivanov-ii, a.ivanov и тд то есть со знаком «-» или «.», которые 1с создать не дает и соответственно проверка пройти не может… и все это ограничения 1с, возможно есть смысл добавить файл с сопоставлением имен по подобию NtUser.ini от Romix, это могло бы спасти ситуацию в данном случае и помочь обойти ограничения.

    Reply
  22. MadDAD

    (22) byos, ну есть еще вариант — моя же утилита. Она умеет создавать имена пользователей с любыми печатными знаками, хоть с пробелами, хоть совсем без имени. В самой 1С я так и не понял зачем наложены такие ограничения, на работу это не влияет.

    Теоретически можно добавить сопоставление, но получится, что если пользователь найдет где хранится файл сопоставления, то сможет внести туда сопоставление своего имени с админской учеткой например, и зайти в 1С с админскими правами.

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

    Reply
  23. byos

    Утилиту видел, неудобно когда из конфигуратора нельзя редактировать, тк работает через него со списком несколько человек. Вопрос по поводу получения прав администратора 1с редактированием файла сопоставлений, решается запретом редактирования этого файла для пользователей, оставляем им возможность только на чтение, а если безопасностью файлов не заниматься, то можно с помощью вашей утилиты и файл с пользователями 1с отредактировать как надо 🙂

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

    Reply
  24. MadDAD

    (24) byos, списком сопоставления займусь не раньше января.

    Утилитой можно создавать новых пользователей, при сохранении конфигуратор проверяет только нового или измененного пользователя, так что неудобство не слишком большое. К тому же утилита умеет выгружать и загружать список в формате XML и CSV. А это уже позволяет в любом удобном редакторе заниматься списками пользователей. Хоть в экселе.

    Теоретически даже можно реализовать автоматическое добавление доменного юзера в список 1С при помощи например скрипта на VBS по заданию в планировщике.

    Reply
  25. pilotro

    Если в имени пользователя 8 и более символов то вываливается с ошибкой.

    испробовал на именах visitor1, visitor2, kristinac

    Сигнатура проблемы:

    Имя события проблемы: BEX

    Имя приложения: LogonTo1C.exe

    Версия приложения: 1.0.0.1

    Отметка времени приложения: 2a425e19

    Имя модуля с ошибкой: StackHash_a032

    Версия модуля с ошибкой: 0.0.0.0

    Отметка времени модуля с ошибкой: 00000000

    Смещение исключения: 01e94f9c

    Код исключения: c0000005

    Данные исключения: 00000008

    Версия ОС: 6.1.7601.2.1.0.144.8

    Код языка: 1049

    Дополнительные сведения 1: a032

    Дополнительные сведения 2: a0325dfb286817ced98a05510bf554cc

    Дополнительные сведения 3: 6f55

    Дополнительные сведения 4: 6f55b2738a6c81a812d5414f59fc5d8d

    Ознакомьтесь с заявлением о конфиденциальности в Интернете:

    http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0419

    Если заявление о конфиденциальности в Интернете недоступно, ознакомьтесь с его локальным вариантом:

    C:Windowssystem32
    u-RUerofflps.txt

    Reply
  26. MadDAD

    (26) pilotro, ошибку воспроизвести не получается. Пробовал на имени пользователя «visitor12345678910101010»

    На каком этапе происходит ошибка — до выбора базы или после?

    Можете приложить дамп или минидамп?

    попробуйте эту версию:

    Reply
  27. pilotro

    Очень странно, но сегодня у меня получилось зайти под именем visitor1. Однако создав в домене нового пользователя visitor3 получил ту же ошибку. Ошибка происходит после выбора базы, видно как мелькает подстановка имени пользователя а дальше вышеуказанная ошибка (та от которой текст). После нажатия «закрыть программу» появляется маленькое окошко application error (присылал снимок его) после нажатия на нем ok остается какой-то кусок окошка 1с (просто белая область посреди экрана) если на нем щелкнуть мышью появляется опять же стандартный интерфейс закрытия подвисшего приложения

    Текст при закрытии последней части

    с радостью предоставлю дамп или минидамп если ткнете как это сделать в 1с.

    к сожалению Ваш exe не работает: запускается — выбираем базу — мелькает подстановка пользователя — и приложение просто закрывается.

    Reply
  28. MadDAD

    (28) Укажите, пожалуйста какая у Вас ОС и какой релиз 1С. Точно ли 7.27 для SQL?

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

    мини дамп можно снять при помощи ProcessExplorerот Sysinternals аналогичным образом.

    Reply
  29. MadDAD

    (28) Судя по ошибке у Вас Win7. Включен ли DEP? Программу запускаете с привелегиями администратора? Не запущен ли Касперский?

    Reply
  30. pilotro

    извиняюсь за задержку.

    ОС: 2008R2

    1c: Секретный релиз платформы v77.27.7

    SQL: MS 2014 (стоит на другом сервере win 2012R2)

    DEP включен. (повторюсь это происходит только для определенных имен пользователей)

    запускал и с привелегиями администратора и без них (у др. пользователей работает под правами пользователей)

    антивируса не стоит.

    Reply
  31. pilotro
  32. pilotro

    кхм, прошу прощения, просто пытаюсь напомнить о себе. Для меня решение этой проблемы действительно важно.

    Reply
  33. MadDAD

    (33) pilotro, добрый день. Смогу заняться не раньше ближайших выходных.

    Reply
  34. pilotro

    дико извиняюсь, но все таки хочу напомнить о себе.

    Reply
  35. MadDAD

    (35) именно для определенных имен или для определенных учетных записей? Пробовали пересоздать профили пользователей? сама 1С без надстроек нормально под ними запускается?

    Reply
  36. vcv

    (35) Если у кого никак не заработает это решение, попробуйте старый патч от Romix.

    Reply
  37. MadDAD

    Исходники: https://github.com/DmitryDreytser/1C-7.7-Domain-logon

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

    Reply
  38. pilotro

    >>именно для определенных имен или для определенных учетных записей?

    сложно сказать мне казалось что для всех у кого имя пользователя длинее 8 символов

    >>Пробовали пересоздать профили пользователей?

    Если честно то нет, но пробовал создавать новых пользователей

    >>сама 1С без надстроек нормально под ними запускается?

    Да. Собственно так и выкручивался.

    Проблема уже давно не возникала. (обходился более короткими именами)

    В ближайшее время попробую ее еще раз воспроизвести.

    Reply
  39. MadDAD

    (40) Небольшой фикс, и переезд с дельфи 7 на Лазарус. Наоело на виртуалке собирать.

    Пробуйте новую версию.

    Reply
  40. pilotro

    Reply

Leave a Comment

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