IE2017

Сквозная доменная авторизация в 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.
 

Скачать файлы

Наименование Файл Версия Размер
LogonTo1C
.zip 210,68Kb
17.11.14
39
.zip 17.11.2014 210,68Kb 39 Скачать

См. также

Комментарии
0. Дмитрий Дрейцер (MadDAD) 117 19.04.12 10:24 Сейчас в теме
1С 7.7 не хватает гибридной авторизации. Иногда это довольно неудобно. Пользователю требуется вводить дополнительно пароль, выбирать учетную запись из всех возможных. А часто и опасно, например, если один пользователь случайно узнает пароль другого, то может узнать конфиденциальные данные или просто что-то испортить. К тому же любомй пользователю всегда доступен список всех пользователей.


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


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

1. Иван Иванов (Famza) 80 19.04.12 10:24 Сейчас в теме
Плюс.
Имхо, смысла не вижу - в организации однозначно будут знать пароли других бухов. Да и 7ка не тот продукт который можно защитить хоть в скульном варианте, и тем более - в файловом.
Согласно http://www.1c.ru/news/info.jsp?id=15011 все повально идем на 8ку - мож скоро снимут 7ку и с поддержки
2. Shurix Noise (shurix) 21.05.12 15:24 Сейчас в теме
Famza, не соглашусь с вами.
Смешно звучит, но есть еще ряд организаций, в которых только начинается внедряться 1С 7.7, переходя с допотопного самописного ПО на Foxpro 2.6.
Выбор падает на 7ку исключительно из-за того, что на 50+ пользователей лицензирование 1С 8 эти конторы просто не потянут. И реализовать в данном случае доменную авторизацию сам Бог велит ;-)
Так что это однозначно полезный "костыль".
4. Иван Иванов (Famza) 80 27.06.12 12:18 Сейчас в теме
(2) shurix, (3) fort13, на счет "долго жить" не факт - и я сам знаю немало тех, у кого все только начинается и именно с 7ки. Но дебаты на эту тему можно долго продолжать.
(2) shurix, у меня что-то не стыкуется
Выбор падает на 7ку исключительно из-за того, что на 50+ пользователей лицензирование 1С 8 эти конторы просто не потянут. И реализовать в данном случае доменную авторизацию сам Бог велит ;-)

Те, бабла поднять домен более на 50+ юзеров хватает, а на 8ку - нет? Ну да, варез дешевле... )))
6. Shurix Noise (shurix) 27.06.12 19:58 Сейчас в теме
(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? Такое вам в голову не приходило.

Поэтому давайте не будем зря бросаться беспочвенными обвинениями. Договорились? ;-)
корум; +1 Ответить 1
7. Иван Иванов (Famza) 80 27.06.12 23:34 Сейчас в теме
(5) fort13, нам уже давно не хватает, хотя и доделано многое. 7ка просто проще и в обслуживании и во внедрении, но многие моменты уже решены в типовых конфах 8ки, да и возможности гораздо шире... как и прожорливость любых ресурсов и денег - тут я согласен.
(6) shurix, где обвинение в пиратстве? А варезом все когда-нибудь пользовались, если нет - можешь кинуть в меня спецсмалом. )))
На счет выборов ПО - тут можно много и долго обсуждать - и вариантов куча. Че демагогить-то?
8. poyson (poyson) 27.02.13 13:04 Сейчас в теме
Спасибо. очень помогло. +1
9. Vova Petrov (bdsmka) 20.11.13 09:21 Сейчас в теме
Забыли (или не подумали), дописать об установке NTFS прав на каталоги пользователей.
При вашей настройке можно принести флешку с портабельной 7-кой и зайти под любым пользователем без пароля.
10. Дмитрий Дрейцер (MadDAD) 117 20.11.13 10:57 Сейчас в теме
(9) Не совсем понял комментарий. Какая моя настройка? Это отдельная утилита, и рассчитана она на работу в домене, где аутентификация пользователя реализуется контроллером домена.
Если принести портабельную 7 со сломанной авторизацией то никакие настройки прав доступа к каталогам пользователей не помогут.
11. Vova Petrov (bdsmka) 25.06.14 08:39 Сейчас в теме
Если запустить ярлык 7-ки с обычной авторизацией, вывалятся все пользователи - и можно зайти под любым. Дынный костыль лишь подставляет имя авторизованного пользователя домена (он не производит NTLM аутентификацию пользователя)!
А вот если пользователю дать права только на свою папку Users\пользователь, то он и сможет зайти только под собой. В конфигураторе нужно строго указать каталог для каждого пользователя
12. Дмитрий Дрейцер (MadDAD) 117 26.06.14 00:23 Сейчас в теме
(11) bdsmka, Именно так. Смысл проводить авторизацию отсутствует, т.к. пользователь уже авторизован в системе. Поэтому подставляем имя текущего пользователя и выключаем проверку пароля.
Ограничение доступа к каталогу это дополнительная мера безопасности. На усмотрение системного администратора.
У этой утилиты другая функция. Злоумышленник с платформой на флешке войдет в систему даже при отсутствии прав на каталог пользователя, поэтому говорить о безопасности 7.7 смысла нет.
13. byos 34 15.11.14 13:36 Сейчас в теме
При запуске из под отсутствующего пользователя виснет на окне авторизации.
Окно с ошибкой все-таки появляется, но за зависшим окном авторизации его не видно, пока на него не переключишься вручную и это не удобно тк надо еще догадаться, что за зависшим окном авторизации есть сообщение об ошибке пользователя это исправимо как то? (так в win 2008 и 2012, в 2003 все ок)
и еще такой вопрос, можно передавать управление 1с не файлу 1cv7s.exe, а другим, например 1cTrade.exe и тд?
14. Дмитрий Дрейцер (MadDAD) 117 15.11.14 22:44 Сейчас в теме
(13)
1. Тестировал на WinServer 2008, не уверен что смогу найти исходники, но постараюсь поправить.
2. Файл для запуска на сколько помню передается единственным параметром командной строки утилиты. Поэтому можно передавать что угодно. Нюанс в том что здесь путь к каталогу базы берется из памяти процесса 1С, и скорее всего под другими релизами и версиями работать не будет. Нужно тестировать.


А окно авторизации не прячется а зависает?
15. byos 34 17.11.14 11:15 Сейчас в теме
(14) MadDAD, в 2008 r2 окно авторизации зависает, а за ним (точнее за сплешем 1с7) прячется ошибка об отсутствии пользователя, в 2012 r2, окно авторизации не появляется, а сообщение с ошибкой прячется за сплешем 1с7, и тоже не появляется на переднем плане, если не сложно подправьте пожалуйста, это доработка 1с как раз то что нужно.
версия и релиз один - 27
пробовал как параметр указать LogonTo1C.exe "name".exe все равно запускает 1cv7s.exe, может букву надо как параметр указывать какую?
заранее спасибо
16. Дмитрий Дрейцер (MadDAD) 117 17.11.14 12:45 Сейчас в теме
(15) byos,

Версия обновлена.
1. Если пользователь не обнаружен в списке то сначала закрываtтся процесс 1С, потом показывается уведомление. Для уведомления установлен флаг "TopMost", т.е. поверх всех окон, модальное.
2. для запуска используется по умолчанию 1cv7s.exe, или то что указано первым параметром, без ключей.

Нюанс: параметры запуска не передаются стратеру 1С. Если это нужно - сделаю. Исходники нашлись.
17. byos 34 17.11.14 14:41 Сейчас в теме
(16) MadDAD, Проверил, все работат как написано, спасибо
18. Сергей (Che) Коцюра (CheBurator) 3385 17.11.14 18:31 Сейчас в теме
У коллеги vcv в профиле есть стартер, который позволяет реализовать для 7.7 виндовз-авторизацию.
данное решение - выглядит немножко "перегруженным" - слишком много всего надо соблюсти и состыковать. а на стыках - всегда "рвется".
.
имхо конечно
19. Дмитрий Дрейцер (MadDAD) 117 18.11.14 08:40 Сейчас в теме
(18) CheBurator, к сожалению не нашел у vcv такого стартера, можно ссылку на публикацию?

Да и стыковать особо ничего не надо. Нужно всего лишь обозвать в 1С юзеров так же как в домене.
20. Владислав Чинючин (vcv) 83 18.11.14 08:56 Сейчас в теме
(18) CheBurator, Напутал немножко. Это не у меня. У кого-то такой стартер действительно пробегал, но никак не вспоминается у кого.
Я пользуюсь древним патчем NtUser. Он, конечно, патч и по этому лицензионно нечист, но работает отлично.
Кому надо, берите отсюда (http://1drv.ms/1uozwqT) что бы не искать по инету.
21. Дмитрий Дрейцер (MadDAD) 117 18.11.14 11:44 Сейчас в теме
(20) vcv, (18) CheBurator, Нашел. Это стартертоварища vde69, но у него требуется доработка конфигурации, так что, только ради внедрения прозрачной авторизации проще все таки использовать мой костыль.

По сути, оно работает так же как и в патче от Ромикса, из предыдущего коммента. Тольк патч происходит в памяти процесса 1С, и не используется сопоставление имен.
22. byos 34 11.12.14 16:02 Сейчас в теме
Выявилось ограничение, при тестировании все отлично работало, но не был учтён момент ограничения имени в 1с, а это только буквы и цифры, при тестировании использовались имена вида - test, ivanov и тд, а реальные имена имеют вид ivanov-ii, a.ivanov и тд то есть со знаком "-" или ".", которые 1с создать не дает и соответственно проверка пройти не может... и все это ограничения 1с, возможно есть смысл добавить файл с сопоставлением имен по подобию NtUser.ini от Romix, это могло бы спасти ситуацию в данном случае и помочь обойти ограничения.
23. Дмитрий Дрейцер (MadDAD) 117 12.12.14 11:38 Сейчас в теме
(22) byos, ну есть еще вариант - моя же утилита. Она умеет создавать имена пользователей с любыми печатными знаками, хоть с пробелами, хоть совсем без имени. В самой 1С я так и не понял зачем наложены такие ограничения, на работу это не влияет.

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

В любом случае попробуйте первый вариант, т.к. в ближайший месяц времени для реализации второго у меня не будет :(
24. byos 34 12.12.14 15:12 Сейчас в теме
Утилиту видел, неудобно когда из конфигуратора нельзя редактировать, тк работает через него со списком несколько человек. Вопрос по поводу получения прав администратора 1с редактированием файла сопоставлений, решается запретом редактирования этого файла для пользователей, оставляем им возможность только на чтение, а если безопасностью файлов не заниматься, то можно с помощью вашей утилиты и файл с пользователями 1с отредактировать как надо :)
Ну если будет время, думаю там совсем немного изменений, то добавьте, наверно найдутся такие же как и я, кому пригодится.
25. Дмитрий Дрейцер (MadDAD) 117 12.12.14 16:50 Сейчас в теме
(24) byos, списком сопоставления займусь не раньше января.

Утилитой можно создавать новых пользователей, при сохранении конфигуратор проверяет только нового или измененного пользователя, так что неудобство не слишком большое. К тому же утилита умеет выгружать и загружать список в формате XML и CSV. А это уже позволяет в любом удобном редакторе заниматься списками пользователей. Хоть в экселе.
Теоретически даже можно реализовать автоматическое добавление доменного юзера в список 1С при помощи например скрипта на VBS по заданию в планировщике.
26. pilot pilot (pilotro) 11.05.16 23:46 Сейчас в теме
Если в имени пользователя 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:\Windows\system32\ru-RU\erofflps.txt

Прикрепленные файлы:
27. Дмитрий Дрейцер (MadDAD) 117 12.05.16 12:59 Сейчас в теме
(26) pilotro, ошибку воспроизвести не получается. Пробовал на имени пользователя "visitor12345678910101010"

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

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

попробуйте эту версию:
Прикрепленные файлы:
LogonTo1C_test.zip
28. pilot pilot (pilotro) 12.05.16 22:43 Сейчас в теме
Очень странно, но сегодня у меня получилось зайти под именем visitor1. Однако создав в домене нового пользователя visitor3 получил ту же ошибку. Ошибка происходит после выбора базы, видно как мелькает подстановка имени пользователя а дальше вышеуказанная ошибка (та от которой текст). После нажатия "закрыть программу" появляется маленькое окошко application error (присылал снимок его) после нажатия на нем ok остается какой-то кусок окошка 1с (просто белая область посреди экрана) если на нем щелкнуть мышью появляется опять же стандартный интерфейс закрытия подвисшего приложения
Текст при закрытии последней части


с радостью предоставлю дамп или минидамп если ткнете как это сделать в 1с.
к сожалению Ваш exe не работает: запускается - выбираем базу - мелькает подстановка пользователя - и приложение просто закрывается.
29. Дмитрий Дрейцер (MadDAD) 117 16.05.16 09:16 Сейчас в теме
(28) Укажите, пожалуйста какая у Вас ОС и какой релиз 1С. Точно ли 7.27 для SQL?

Дамп можно снять при помощи диспетчера задач. Нужно кликнуть правой кнопкой на зависшем процессе и выбрать "Сохранить дамп", он будет большой.
мини дамп можно снять при помощи ProcessExplorerот Sysinternals аналогичным образом.
30. Дмитрий Дрейцер (MadDAD) 117 16.05.16 10:54 Сейчас в теме
(28) Судя по ошибке у Вас Win7. Включен ли DEP? Программу запускаете с привелегиями администратора? Не запущен ли Касперский?
31. pilot pilot (pilotro) 24.05.16 15:21 Сейчас в теме
извиняюсь за задержку.
ОС: 2008R2
1c: Секретный релиз платформы v77.27.7
SQL: MS 2014 (стоит на другом сервере win 2012R2)
DEP включен. (повторюсь это происходит только для определенных имен пользователей)
запускал и с привелегиями администратора и без них (у др. пользователей работает под правами пользователей)
антивируса не стоит.
32. pilot pilot (pilotro) 24.05.16 15:23 Сейчас в теме
33. pilot pilot (pilotro) 08.06.16 00:21 Сейчас в теме
кхм, прошу прощения, просто пытаюсь напомнить о себе. Для меня решение этой проблемы действительно важно.
34. Дмитрий Дрейцер (MadDAD) 117 08.06.16 12:49 Сейчас в теме
(33) pilotro, добрый день. Смогу заняться не раньше ближайших выходных.
35. pilot pilot (pilotro) 21.07.16 23:05 Сейчас в теме
дико извиняюсь, но все таки хочу напомнить о себе.
37. Дмитрий Дрейцер (MadDAD) 117 14.12.16 08:08 Сейчас в теме
(35) именно для определенных имен или для определенных учетных записей? Пробовали пересоздать профили пользователей? сама 1С без надстроек нормально под ними запускается?
38. Владислав Чинючин (vcv) 83 14.12.16 08:44 Сейчас в теме
(35) Если у кого никак не заработает это решение, попробуйте старый патч от Romix.
Прикрепленные файлы:
nt_user1C.rar
39. Дмитрий Дрейцер (MadDAD) 117 14.12.16 08:46 Сейчас в теме
Исходники: https://github.com/DmitryDreytser/1C-7.7-Domain-logon

Обнаружил что на виртуалке где лежал проект побился файл диска. Во избежание потери нетленки делюсь с гитхабом.
40. pilot pilot (pilotro) 15.12.16 00:49 Сейчас в теме
>>именно для определенных имен или для определенных учетных записей?
сложно сказать мне казалось что для всех у кого имя пользователя длинее 8 символов
>>Пробовали пересоздать профили пользователей?
Если честно то нет, но пробовал создавать новых пользователей
>>сама 1С без надстроек нормально под ними запускается?
Да. Собственно так и выкручивался.

Проблема уже давно не возникала. (обходился более короткими именами)
В ближайшее время попробую ее еще раз воспроизвести.
41. Дмитрий Дрейцер (MadDAD) 117 15.12.16 15:27 Сейчас в теме
(40) Небольшой фикс, и переезд с дельфи 7 на Лазарус. Наоело на виртуалке собирать.

Пробуйте новую версию.
Прикрепленные файлы:
DomainLogonTo1C.7z
Оставьте свое сообщение