gifts2017

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

Опубликовал Дмитрий Дрейцер (MadDAD) в раздел Администрирование - Сервисные утилиты

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
37
.zip 17.11.2014 210,68Kb 37 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

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


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


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

1. Иван Иванов (Famza) 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) 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? Такое вам в голову не приходило.

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


А окно авторизации не прячется а зависает?
15. byos 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) 17.11.14 12:45
(15) byos,

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

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

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

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

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

В любом случае попробуйте первый вариант, т.к. в ближайший месяц времени для реализации второго у меня не будет :(
24. byos 12.12.14 15:12
Утилиту видел, неудобно когда из конфигуратора нельзя редактировать, тк работает через него со списком несколько человек. Вопрос по поводу получения прав администратора 1с редактированием файла сопоставлений, решается запретом редактирования этого файла для пользователей, оставляем им возможность только на чтение, а если безопасностью файлов не заниматься, то можно с помощью вашей утилиты и файл с пользователями 1с отредактировать как надо :)
Ну если будет время, думаю там совсем немного изменений, то добавьте, наверно найдутся такие же как и я, кому пригодится.
25. Дмитрий Дрейцер (MadDAD) 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) 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) 16.05.16 09:16
(28) Укажите, пожалуйста какая у Вас ОС и какой релиз 1С. Точно ли 7.27 для SQL?

Дамп можно снять при помощи диспетчера задач. Нужно кликнуть правой кнопкой на зависшем процессе и выбрать "Сохранить дамп", он будет большой.
мини дамп можно снять при помощи ProcessExplorerот Sysinternals аналогичным образом.
30. Дмитрий Дрейцер (MadDAD) 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 включен. (повторюсь это происходит только для определенных имен пользователей)
запускал и с привелегиями администратора и без них (у др. пользователей работает под правами пользователей)
антивируса не стоит.
33. pilot pilot (pilotro) 08.06.16 00:21
кхм, прошу прощения, просто пытаюсь напомнить о себе. Для меня решение этой проблемы действительно важно.
34. Дмитрий Дрейцер (MadDAD) 08.06.16 12:49
(33) pilotro, добрый день. Смогу заняться не раньше ближайших выходных.
35. pilot pilot (pilotro) 21.07.16 23:05
дико извиняюсь, но все таки хочу напомнить о себе.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа