Данная разработка является попыткой реализовать сквозную 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.
1С 7.7 не хватает гибридной авторизации. Иногда это довольно неудобно. Пользователю требуется вводить дополнительно пароль, выбирать учетную запись из всех возможных. А часто и опасно, например, если один пользователь случайно узнает пароль другого, то может узнать конфиденциальные данные или просто что-то испортить. К тому же любомй пользователю всегда доступен список всех пользователей.
Данная разработка является попыткой реализовать сквозную Windows авторизацию пользователей.
Перейти к публикации
Плюс.
http://www.1c.ru/news/info.jsp?id=15011 все повально идем на 8ку — мож скоро снимут 7ку и с поддержки
Имхо, смысла не вижу — в организации однозначно будут знать пароли других бухов. Да и 7ка не тот продукт который можно защитить хоть в скульном варианте, и тем более — в файловом.
Согласно
Famza, не соглашусь с вами.
Смешно звучит, но есть еще ряд организаций, в которых только начинается внедряться 1С 7.7, переходя с допотопного самописного ПО на Foxpro 2.6.
Выбор падает на 7ку исключительно из-за того, что на 50+ пользователей лицензирование 1С 8 эти конторы просто не потянут. И реализовать в данном случае доменную авторизацию сам Бог велит 😉
Так что это однозначно полезный «костыль».
(2) shurix, (3) fort13, на счет «долго жить» не факт — и я сам знаю немало тех, у кого все только начинается и именно с 7ки. Но дебаты на эту тему можно долго продолжать.
(2) shurix, у меня что-то не стыкуется
Те, бабла поднять домен более на 50+ юзеров хватает, а на 8ку — нет? Ну да, варез дешевле… )))
(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? Такое вам в голову не приходило.
Поэтому давайте не будем зря бросаться беспочвенными обвинениями. Договорились? 😉
(5) fort13, нам уже давно не хватает, хотя и доделано многое. 7ка просто проще и в обслуживании и во внедрении, но многие моменты уже решены в типовых конфах 8ки, да и возможности гораздо шире… как и прожорливость любых ресурсов и денег — тут я согласен.
(6) shurix, где обвинение в пиратстве? А варезом все когда-нибудь пользовались, если нет — можешь кинуть в меня спецсмалом. )))
На счет выборов ПО — тут можно много и долго обсуждать — и вариантов куча. Че демагогить-то?
Спасибо. очень помогло. +1
Забыли (или не подумали), дописать об установке NTFS прав на каталоги пользователей.
При вашей настройке можно принести флешку с портабельной 7-кой и зайти под любым пользователем без пароля.
(9) Не совсем понял комментарий. Какая моя настройка? Это отдельная утилита, и рассчитана она на работу в домене, где аутентификация пользователя реализуется контроллером домена.
Если принести портабельную 7 со сломанной авторизацией то никакие настройки прав доступа к каталогам пользователей не помогут.
Если запустить ярлык 7-ки с обычной авторизацией, вывалятся все пользователи — и можно зайти под любым. Дынный костыль лишь подставляет имя авторизованного пользователя домена (он не производит NTLM аутентификацию пользователя)!
А вот если пользователю дать права только на свою папку Usersпользователь, то он и сможет зайти только под собой. В конфигураторе нужно строго указать каталог для каждого пользователя
(11) bdsmka, Именно так. Смысл проводить авторизацию отсутствует, т.к. пользователь уже авторизован в системе. Поэтому подставляем имя текущего пользователя и выключаем проверку пароля.
Ограничение доступа к каталогу это дополнительная мера безопасности. На усмотрение системного администратора.
У этой утилиты другая функция. Злоумышленник с платформой на флешке войдет в систему даже при отсутствии прав на каталог пользователя, поэтому говорить о безопасности 7.7 смысла нет.
При запуске из под отсутствующего пользователя виснет на окне авторизации.
Окно с ошибкой все-таки появляется, но за зависшим окном авторизации его не видно, пока на него не переключишься вручную и это не удобно тк надо еще догадаться, что за зависшим окном авторизации есть сообщение об ошибке пользователя это исправимо как то? (так в win 2008 и 2012, в 2003 все ок)
и еще такой вопрос, можно передавать управление 1с не файлу 1cv7s.exe, а другим, например 1cTrade.exe и тд?
(13)
1. Тестировал на WinServer 2008, не уверен что смогу найти исходники, но постараюсь поправить.
2. Файл для запуска на сколько помню передается единственным параметром командной строки утилиты. Поэтому можно передавать что угодно. Нюанс в том что здесь путь к каталогу базы берется из памяти процесса 1С, и скорее всего под другими релизами и версиями работать не будет. Нужно тестировать.
А окно авторизации не прячется а зависает?
(14) в 2008 r2 окно авторизации зависает, а за ним (точнее за сплешем 1с7) прячется ошибка об отсутствии пользователя, в 2012 r2, окно авторизации не появляется, а сообщение с ошибкой прячется за сплешем 1с7, и тоже не появляется на переднем плане, если не сложно подправьте пожалуйста, это доработка 1с как раз то что нужно.
версия и релиз один — 27
пробовал как параметр указать LogonTo1C.exe «name».exe все равно запускает 1cv7s.exe, может букву надо как параметр указывать какую?
заранее спасибо
(15) byos,
Версия обновлена.
1. Если пользователь не обнаружен в списке то сначала закрываtтся процесс 1С, потом показывается уведомление. Для уведомления установлен флаг «TopMost», т.е. поверх всех окон, модальное.
2. для запуска используется по умолчанию 1cv7s.exe, или то что указано первым параметром, без ключей.
Нюанс: параметры запуска не передаются стратеру 1С. Если это нужно — сделаю. Исходники нашлись.
(16) Проверил, все работат как написано, спасибо
У коллеги vcv в профиле есть стартер, который позволяет реализовать для 7.7 виндовз-авторизацию.
данное решение — выглядит немножко «перегруженным» — слишком много всего надо соблюсти и состыковать. а на стыках — всегда «рвется».
.
имхо конечно
(18) CheBurator, к сожалению не нашел уvcv такого стартера, можно ссылку на публикацию?
Да и стыковать особо ничего не надо. Нужно всего лишь обозвать в 1С юзеров так же как в домене.
(18) CheBurator, Напутал немножко. Это не у меня. У кого-то такой стартер действительно пробегал, но никак не вспоминается у кого.
http://1drv.ms/1uozwqT) что бы не искать по инету.
Я пользуюсь древним патчем NtUser. Он, конечно, патч и по этому лицензионно нечист, но работает отлично.
Кому надо, берите отсюда (
(20) vcv, (18) CheBurator, Нашел. Этостартер товарища vde69 , но у него требуется доработка конфигурации, так что, только ради внедрения прозрачной авторизации проще все таки использовать мой костыль.
По сути, оно работает так же как и в патче от Ромикса, из предыдущего коммента. Тольк патч происходит в памяти процесса 1С, и не используется сопоставление имен.
Выявилось ограничение, при тестировании все отлично работало, но не был учтён момент ограничения имени в 1с, а это только буквы и цифры, при тестировании использовались имена вида — test, ivanov и тд, а реальные имена имеют вид ivanov-ii, a.ivanov и тд то есть со знаком «-» или «.», которые 1с создать не дает и соответственно проверка пройти не может… и все это ограничения 1с, возможно есть смысл добавить файл с сопоставлением имен по подобию NtUser.ini от Romix, это могло бы спасти ситуацию в данном случае и помочь обойти ограничения.
(22) byos, ну есть еще вариант — моя жеутилита . Она умеет создавать имена пользователей с любыми печатными знаками, хоть с пробелами, хоть совсем без имени. В самой 1С я так и не понял зачем наложены такие ограничения, на работу это не влияет.
Теоретически можно добавить сопоставление, но получится, что если пользователь найдет где хранится файл сопоставления, то сможет внести туда сопоставление своего имени с админской учеткой например, и зайти в 1С с админскими правами.
В любом случае попробуйте первый вариант, т.к. в ближайший месяц времени для реализации второго у меня не будет 🙁
Утилиту видел, неудобно когда из конфигуратора нельзя редактировать, тк работает через него со списком несколько человек. Вопрос по поводу получения прав администратора 1с редактированием файла сопоставлений, решается запретом редактирования этого файла для пользователей, оставляем им возможность только на чтение, а если безопасностью файлов не заниматься, то можно с помощью вашей утилиты и файл с пользователями 1с отредактировать как надо 🙂
Ну если будет время, думаю там совсем немного изменений, то добавьте, наверно найдутся такие же как и я, кому пригодится.
(24) byos, списком сопоставления займусь не раньше января.
Утилитой можно создавать новых пользователей, при сохранении конфигуратор проверяет только нового или измененного пользователя, так что неудобство не слишком большое. К тому же утилита умеет выгружать и загружать список в формате XML и CSV. А это уже позволяет в любом удобном редакторе заниматься списками пользователей. Хоть в экселе.
Теоретически даже можно реализовать автоматическое добавление доменного юзера в список 1С при помощи например скрипта на VBS по заданию в планировщике.
Если в имени пользователя 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
(26) pilotro, ошибку воспроизвести не получается. Пробовал на имени пользователя «visitor12345678910101010»
На каком этапе происходит ошибка — до выбора базы или после?
Можете приложить дамп или минидамп?
попробуйте эту версию:
Очень странно, но сегодня у меня получилось зайти под именем visitor1. Однако создав в домене нового пользователя visitor3 получил ту же ошибку. Ошибка происходит после выбора базы, видно как мелькает подстановка имени пользователя а дальше вышеуказанная ошибка (та от которой текст). После нажатия «закрыть программу» появляется маленькое окошко application error (присылал снимок его) после нажатия на нем ok остается какой-то кусок окошка 1с (просто белая область посреди экрана) если на нем щелкнуть мышью появляется опять же стандартный интерфейс закрытия подвисшего приложения
Ошибка привела к остановке взаимодействия программы с Windows.
Сигнатура проблемы:
Имя события проблемы: AppHangB1
Имя приложения: 1cv7s.exe
Версия приложения: 7.70.0.27
Отметка времени приложения: 4573fcd8
Сигнатура зависания: 51aa
Тип зависания: 0
Версия ОС: 6.1.7601.2.1.0.144.8
Код языка: 1049
Доп. сигнатура зависания 1: 51aa7f1c6ed2246434f7914d705a2b55
Доп. сигнатура зависания 2: 35b6
Доп. сигнатура зависания 3: 35b60c644cb16ae984038d8492e7b6b3
Доп. сигнатура зависания 4: 51aa
Доп. сигнатура зависания 5: 51aa7f1c6ed2246434f7914d705a2b55
Доп. сигнатура зависания 6: 35b6
Доп. сигнатура зависания 7: 35b60c644cb16ae984038d8492e7b6b3
Ознакомьтесь с заявлением о конфиденциальности в Интернете:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0419
Если заявление о конфиденциальности в Интернете недоступно, ознакомьтесь с его локальным вариантом:
C:Windowssystem32
u-RUerofflps.txt
с радостью предоставлю дамп или минидамп если ткнете как это сделать в 1с.
к сожалению Ваш exe не работает: запускается — выбираем базу — мелькает подстановка пользователя — и приложение просто закрывается.
(28) Укажите, пожалуйста какая у Вас ОС и какой релиз 1С. Точно ли 7.27 для SQL?
Дамп можно снять при помощи диспетчера задач. Нужно кликнуть правой кнопкой на зависшем процессе и выбрать «Сохранить дамп», он будет большой.
ProcessExplorer от Sysinternals аналогичным образом.
мини дамп можно снять при помощи
(28) Судя по ошибке у Вас Win7. Включен ли DEP? Программу запускаете с привелегиями администратора? Не запущен ли Касперский?
извиняюсь за задержку.
ОС: 2008R2
1c: Секретный релиз платформы v77.27.7
SQL: MS 2014 (стоит на другом сервере win 2012R2)
DEP включен. (повторюсь это происходит только для определенных имен пользователей)
запускал и с привелегиями администратора и без них (у др. пользователей работает под правами пользователей)
антивируса не стоит.
дамп
http://rgho.st/7YlqYxSRW
кхм, прошу прощения, просто пытаюсь напомнить о себе. Для меня решение этой проблемы действительно важно.
(33) pilotro, добрый день. Смогу заняться не раньше ближайших выходных.
дико извиняюсь, но все таки хочу напомнить о себе.
(35) именно для определенных имен или для определенных учетных записей? Пробовали пересоздать профили пользователей? сама 1С без надстроек нормально под ними запускается?
(35) Если у кого никак не заработает это решение, попробуйте старый патч от Romix.
Исходники:https://github.com/DmitryDreytser/1C-7.7-Domain-logon
Обнаружил что на виртуалке где лежал проект побился файл диска. Во избежание потери нетленки делюсь с гитхабом.
>>именно для определенных имен или для определенных учетных записей?
сложно сказать мне казалось что для всех у кого имя пользователя длинее 8 символов
>>Пробовали пересоздать профили пользователей?
Если честно то нет, но пробовал создавать новых пользователей
>>сама 1С без надстроек нормально под ними запускается?
Да. Собственно так и выкручивался.
Проблема уже давно не возникала. (обходился более короткими именами)
В ближайшее время попробую ее еще раз воспроизвести.
(40) Небольшой фикс, и переезд с дельфи 7 на Лазарус. Наоело на виртуалке собирать.
Пробуйте новую версию.
—