Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Проблема с приложением для автовхода в 1С под пользователем домена (число прочтений - 8679 )
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Проблема с приложением для автовхода в 1С под пользователем домена
03. Июня 2010 :: 09:04
Печать  
Всем доброго времени суток!
Подскажите, как можно решить задачу:

Исходные:
-1С работает в терминале;
-При входе определенного доменного пользователя на терминал спец. скрипт пытается прочитать логин/пароль пользователя из спец. файла
-Если данных нет, то система запрашивает логин-пароль. В противном случае происходит автовход в программу и данные сохраняются.

Необходимо:
В случае смены пароля запросить данные у пользователя заново.

Варианты решения пробовал следующие:
-При входе 1С сравнивать хэш пароля, полученный при помощи UsersDef.dll и хэш пароля из командной строки и при несовпадении устанавливать флаг-файл для запускающего скрипта. (не самое лучшее решение для моих серверов)
-Использовать UsersDef.dll для чтения хэша в скрипте и выполнять сравнение в скрипте - не работает из внешнего приложения Печаль
-Использовать для этой цели UsersList1C.dll - не работает compound.dll - падает с ошибкой.
-Написать запуск на дельфе или си - исходники чтения хэша на проклубе не доступны, так как для 1C.PROCLUB.RU закончился срок регистрации.
-Использовать приложение на дельфе и UsersDef.dll через ILanguageExtender - при возврате ТЗ падает с ошибкой.

PLEASE HELP! Может у кого есть исходники получения хэша из users.usr или какие-нибудь идеи по решению данной задачи?
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Проблема с приложением для автовхода в 1С под пользователем домена
Ответ #1 - 03. Июня 2010 :: 09:34
Печать  
а если так
пароли менять только вечером когда никто не работает.
после этого вышибать всех из 1с.

Если нет пароля в спец файле то его ( пароль ) должен назначить не пользователь сам себе а администратор.
  
Наверх
 
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Проблема с приложением для автовхода в 1С под пользователем домена
Ответ #2 - 03. Июня 2010 :: 09:54
Печать  
Z1 писал(а) 03. Июня 2010 :: 09:34:
а если так
пароли менять только вечером когда никто не работает.
после этого вышибать всех из 1с.

Если нет пароля в спец файле то его ( пароль ) должен назначить не пользователь сам себе а администратор.

К сожалению, этот вариант не подойдет.
Сама задача встала из-за того, что появилась необходимость дать пользователям возможность самостоятельно менять пароли (Через 1С, при помощи UsersDef.dll)
А параллельно менять спец-файл не получится, так как он на каждом терминале свой.
Т.е. каждый пользователь подтверждает свой вход на каждый терминал как минимум 1 раз при первом входе.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Проблема с приложением для автовхода в 1С под пользователем домена
Ответ #3 - 03. Июня 2010 :: 10:00
Печать  
(slider26) У тебя dbf или sql ?
  
Наверх
 
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Проблема с приложением для автовхода в 1С под пользователем домена
Ответ #4 - 03. Июня 2010 :: 10:07
Печать  
SQL, однако смена пароля происходит по расписанию (Читается хэш из справочника, куда пользователи сохраняют новые пароли). При этом проверяется наличие открытого конфигуратора и поэтому строка соединения не слетает Улыбка
Спец. файлы доступны только на терминалах и только своим владельцам - безопасность, однако Улыбка
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Проблема с приложением для автовхода в 1С под пользователем домена
Ответ #5 - 03. Июня 2010 :: 10:19
Печать  
slider26 писал(а) 03. Июня 2010 :: 10:07:
SQL, однако смена пароля происходит по расписанию (Читается хэш из справочника, куда пользователи сохраняют новые пароли). При этом проверяется наличие открытого конфигуратора и поэтому строка соединения не слетает Улыбка
Спец. файлы доступны только на терминалах и только своим владельцам - безопасность, однако Улыбка

могу скинуть exe ( писал давно текстов нет )
который по файлу users.usr (  обновленному )
восстанавливает файл dba

  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Проблема с приложением для автовхода в 1С под пользователем домена
Ответ #6 - 03. Июня 2010 :: 10:25
Печать  
А если так:
1. пользователям вообще убрать пароли из 1С.
2. Сделать соответствия "ПользовательДомена" - "ПапкаПользователя_В_ИБ" (проще всего ИмяПользователя=ИмяКаталога)
3. При входе в терминал, запускается твоя программа, которая проверяет, есть ли такой пользователь в users.usr и есть ли у него права на чтение каталога. Если всё сошлось - пользователь входит в 1С
  
Наверх
 
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Проблема с приложением для автовхода в 1С под пользователем домена
Ответ #7 - 03. Июня 2010 :: 10:28
Печать  
JohnyDeath писал(а) 03. Июня 2010 :: 10:25:
А если так:
1. пользователям вообще убрать пароли из 1С.
2. Сделать соответствия "ПользовательДомена" - "ПапкаПользователя_В_ИБ" (проще всего ИмяПользователя=ИмяКаталога)
3. При входе в терминал, запускается твоя программа, которая проверяет, есть ли такой пользователь в users.usr и есть ли у него права на чтение каталога. Если всё сошлось - пользователь входит в 1С

Есть несколько специализированных пользователей домена, под которыми нет автовхода Печаль
Также есть несколько пользователей, работающих не в терминале
  
Наверх
 
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Проблема с приложением для автовхода в 1С под пользователем домена
Ответ #8 - 03. Июня 2010 :: 10:32
Печать  
Z1 писал(а) 03. Июня 2010 :: 10:19:
могу скинуть exe ( писал давно текстов нет )
который по файлу users.usr (  обновленному )
восстанавливает файл dba

Спасибо Улыбка По-моему у меня подобное где-то было Улыбка
А алгоритма парсинга Users.usr нет?
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Проблема с приложением для автовхода в 1С под пользователем домена
Ответ #9 - 03. Июня 2010 :: 10:34
Печать  
slider26 писал(а) 03. Июня 2010 :: 10:28:
Есть несколько специализированных пользователей домена, под которыми нет автовхода Печаль
Также есть несколько пользователей, работающих не в терминале

Для тех, у кого нет автовхода можно поступить точно также: прячем от них родной 1C.exe, кидаем им ярлык на свою прогу и далее по той же схеме.
Для нетерминальщиков, думаю, можно поступить аналогично.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Проблема с приложением для автовхода в 1С под пользователем домена
Ответ #10 - 03. Июня 2010 :: 10:38
Печать  
slider26 писал(а) 03. Июня 2010 :: 10:32:
Z1 писал(а) 03. Июня 2010 :: 10:19:
могу скинуть exe ( писал давно текстов нет )
который по файлу users.usr (  обновленному )
восстанавливает файл dba

Спасибо Улыбка По-моему у меня подобное где-то было Улыбка
А алгоритма парсинга Users.usr нет?

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

  
Наверх
 
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Проблема с приложением для автовхода в 1С под пользователем домена
Ответ #11 - 04. Июня 2010 :: 01:46
Печать  
Z1 писал(а) 03. Июня 2010 :: 10:38:
алгоритм
надо контрольную сумму пересчитать и записать ее.
Обсуждение давно было то ли на одинэссии то ли на кубани.
я прочитал ту ветку сделал и перестал мучится.

Не Улыбка
Нужен алгоритм вытаскивания хэша пароля из USERS.USR, чтобы скрипт мог сам его проверить и запросить повторно при необходимости Улыбка
  
Наверх
 
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Проблема с приложением для автовхода в 1С под пользователем домена
Ответ #12 - 04. Июня 2010 :: 01:48
Печать  
JohnyDeath писал(а) 03. Июня 2010 :: 10:34:
Для тех, у кого нет автовхода можно поступить точно также: прячем от них родной 1C.exe, кидаем им ярлык на свою прогу и далее по той же схеме.
Для нетерминальщиков, думаю, можно поступить аналогично.

Что-то мне этот вариант не нравится - достаточно нетерминальщику принести с собой платформу - и заходи под любым пользователем Печаль
  
Наверх
 
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Проблема с приложением для автовхода в 1С под пользователем домена
Ответ #13 - 04. Июня 2010 :: 02:04
Печать  
Для проверки корректности пароля пробовал на дельфе написать обертку к UsersDef.dll:
Код
Выбрать все
  COMGUID := StringToGUID('{549EBC24-DFE0-4230-A5FF-FD447DD695C2}');
  ComServer := CreateComObject(COMGUID) as ILanguageExtender;
  ComServer.FindMethod('ПолучитьСписокПользователей', ind);
  Params := VarArrayCreate([0,0],varVariant);
  Params[0] := 'C:\1S_Bases\TestBase';

  pvarRetValue := '';

  ComServer.CallAsFunc(ind, pvarRetValue, PSafeArray(TVarData(Params).VArray));

  ShowMessage(pvarRetValue);

  ComServer := NIL;
 


В этом виде работает без проблем - возвращает строку с пользователями базы.
А вот если пытаешься вызвать "ПолучитьСписокПользователейТЗ" - получаешь AV - она должна вернуть таблицу значений с пользователями, хэшами паролей, интерфейсами и т.д.
Может в этом направлении что-то можно сделать?
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Проблема с приложением для автовхода в 1С под пользователем домена
Ответ #14 - 04. Июня 2010 :: 05:51
Печать  
В этой разработке http://infostart.ru/public/16686/ есть одна длл-ка, которая может тебе помочь.
Вот моя переписка с автором (надеюсь, что он не против):
Цитата:
vde69 : можешь использовать в некомерческих проектах,

вот интерфейс:

// описание интерфейса библиотеки DLL_Info77.dll версия 1.0.1.0
//
// vde69@mail.ru
//
//
//************************************************************
//
// ПРИМЕР ИСПОЛЬЗОВАНИЯ
//
//************************************************************
type

TVariantBase77 = (Files, SQL, None);
PItemConfigUserBase77 = ^TItemConfigUserBase77;
PItemConectUserBase77 = ^TItemConectUserBase77;

TItemConfigUserBase77 = record
Base77UserName: String;
Base77UserPage: String;
Base77UserFullName: String;
Base77UserPass: String;
end;

TItemConectUserBase77 = record
Base77UserName: String;
RunMode: String;
IsMono: Boolean;
DateTime: String;
ComputerName: String;
end;

TFunctionGetStr = Function: String;
TFunctionGetList = Function: TList;
TFunctionGetVariantBase77 = Function: TVariantBase77;
TProcedureItitializate = procedure (Path:string);
TProcedure = procedure;
THandle = Integer;


var
HandleDLL: THandle;
GetSQLServer,
GetSQLBase,
GetSQLUser,
GetSQLPass,
GetFilePath,
GetFileNameMD,
GetFileNameLinks,
GetFileNameUsers,
GetFileNameDBA: TFunctionGetStr;
GetVariantBase: TFunctionGetVariantBase77;
GetListUserConfig,
GetListActiveUsers: TFunctionGetList;
LoadSetConfig: TProcedureItitializate;
LoadActiveUsers: TProcedure;

procedure TMainForm.FormCreate(Sender: TObject);
begin
HandleDLL := LoadLibrary('DLL_Info77.dll');
if Handle <> 0 then
begin

@GetSQLServer := GetProcAddress(Handle, 'GetSQLServer');
@GetSQLBase := GetProcAddress(Handle, 'GetSQLBase');
@GetSQLUser := GetProcAddress(Handle, 'GetSQLUser');
@GetSQLPass := GetProcAddress(Handle, 'GetSQLPass');
@GetFilePath := GetProcAddress(Handle, 'GetFilePath');
@GetFileNameMD := GetProcAddress(Handle, 'GetFileNameMD');
@GetFileNameLinks := GetProcAddress(Handle, 'GetFileNameLinks');
@GetFileNameUsers := GetProcAddress(Handle, 'GetFileNameUsers');
@GetFileNameDBA := GetProcAddress(Handle, 'GetFileNameDBA');
@GetVariantBase := GetProcAddress(Handle, 'GetVariantBase');
@GetListUserConfig := GetProcAddress(Handle, 'GetListUserConfig');
@GetListActiveUsers := GetProcAddress(Handle, 'GetListActiveUsers');
@LoadSetConfig := GetProcAddress(Handle, 'LoadSetConfig');
@LoadActiveUsers := GetProcAddress(Handle, 'LoadActiveUsers');

//
// по хорошему тут еще надо проверить полученные адреса на корректность
// if @GetSQLServer <> nil then
//
end;
end;

procedure TMainForm.FormDestroy(Sender: TObject);
begin
if Handle <> 0 then FreeLibrary(Handle);
end;
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать