![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
авторизация в w2k [D6, Win2k]
iyalosovetsky © (2001-12-05 19:08:00)как проверить подлинность пользователя в системе, имея его login и password
Hair_Fly (2001-12-14 16:09:00) [1]Народ!!!
Извиняюсь за тупой вопрос, но где можно взять библиотеку в которой описана CreateProcessWithLogonW ?
McSimm (2001-12-14 11:43:00) [2]>Tosov_ (14.12.01 04:42)
>Если у тебя не включено право, о котором сказал VladD2
Действительно, эти права под NT4 были разрешены. Поэтому все и работало.
Tosov_ (2001-12-14 04:42:00) [3]VladD2
Насчет привилегии - не знал, что ее можно включить.. но ведь и вопрос был общим - не обязательно надо быть админом.Как быть простым юзерам?
mcSimm
Запусти usmgr.exe правапользователей\показать доп права (что-то вроде этого)
Если у тебя не включено право, о котором сказал VladD2, то напиши об этом здесь - может на NT Server это право и не нужно (сомневаюсь)
и если не трудно - вышли библиотеку (JCL) на мыло delphi@xonix.ru
McSimm (2001-12-13 13:47:00) [4]Есть, заработало!
CreateProcessWithLogonW работает и не требует себе привелегий
(После некоторых мучений. Оказалось обязательным использование WideString)
Всем спасибо.
McSimm (2001-12-13 10:26:00) [5]2VladD2 ©
Большое спасибо за информацию.
2Tosov
Поделиться могу. Если что, свяжись со мной по почте.
Это есть в библиотеке JCL. Там и демка есть.
Когда я запускаю ее на NT4 (сервер) - она прекрасно работает. Может проблема в том что это сервер, а W2k - у меня рабочая станция?
Раскопал доку по CreateProcessWithLogonW, еще не попробовал.
VladD2 (2001-12-13 00:45:00) [6]Можешь поделиться работающим под NT кодом? Очень надо.
Да код то же. Все дело в привелегии!
VladD2 (2001-12-13 00:44:00) [7]SE_TCB_NAME - это и есть эта привелегия.
VladD2 (2001-12-13 00:42:00) [8]Повторяю еще раз (в это раз я все записал в файл ;o) )
Второй раз я такой подвиг не повторю. :(
Ладно буду краток.
После подколов я глянут на твою страничку и ... все понял.
Код никакой не нужен. Того что я привел достаточно. Дело в привилегии "Act as part of the operating system". Твоя ошибка заключается в том, что ты считаешь что ее нельзя задать, и что процесс обязательно должен быть запущен под учетной записью SYSTEM, а это не так. Ее можно задать любому пользователю. Но (!) привилегия эта слишком крута чтобы ее раздавать на право и на лево. Если процесс серверный (т.е. сервис или COM-объект), то для экаунта под которым он запущен можно просто задать эту привилегию и он смело сможет проверять идентити юзера по паролю и логину. Чтобы задать эту привилегию в W2k нужно открыть "Local Security Policy" (находится в папке "Administrative Tools" контро-панели) выбрать ветке "Local Policies-> User rights assignments" и изменить пункт "Act as part of the operating system", добавив в него учетные записи которым необходимо дать данную привилегию.
Теперь о том как все это дело можно обойти:
1. Можно создать COM-сервер (EXE) повесить его под экаунтом которому дана выше упомянутая привилегия и как следует его защитить. Экаунт и защиту можно дать через dcomcnfg. Экаунт – закладка Identity, выбираем This user и указываем юзера с привелегией. Защиту – закладка General -> Authentication Level -> Packet Privacy (режим шифрования при передаче данных) и на закладке Security указываем тех кому можно запускать и вызывать метод, а так же (в обязательном порядке) указываем кому в последствии можно будет настраивать данные права.
2. Воспользоваться SSPI или ADSI для проверки. Об этом подробно написано здесь:
http://support.microsoft.com/directory/article.asp?ID=KB;EN-US;Q180548(SSPI)
http://support.microsoft.com/directory/article.asp?ID=KB;EN-US;Q218497(ADSI)
Tosov (2001-12-12 22:31:00) [9]VladD2
Прочитал, что ты написал (на мыло в рассылке пришло).
"Act as part.." у нас в универе стоит у 2 админов. Я к сожалению не админ..
В NT RUS "act as part.." = "вход в качестве службы"?
Tosov (2001-12-12 22:14:00) [10]McSimm
CreateProcessWithLogonW - поищи описание на http://msdn.microsoft.com
>Работающий код под NT4 отказывается работать под w2k
Можешь поделиться работающим под NT кодом? Очень надо.
McSimm (2001-12-12 19:27:00) [11]Люди, у меня появилась надежда.
Хочу, чтобы из программы - не сервиса - можно было бы запустить процесс с правами другого пользователя под w2k.
Это моя ветка умерла вчера.
Ситуация такая. Работающий код под NT4 отказывается работать под w2k, именно на процедуре LogonUser, ссылаясь на недостаток у текущего процесса привилегий. Судя по документации, процессу нужно наличиепривилегии SE_TCB_NAME. Причем она не обязательно должна быть enabled. Но здесь у меня полный тупик. Что такое привилегии и как с ними бороться не имею ни малейшего понятия, кроме того, нет (у меня) по этому поводу документации.
Возможность лазить по MSDN у меня крайне ограничена.
Если можете помочь, пожалуйста помогите. Создавать сервис или запускать программу как сервис (говорят есть такая утилита) мне не подходит.
VladD2 (2001-12-12 18:17:00) [12]Блин! Я же запостил вчера ответ! Кто глючит я или эта конфа?
Tosov (2001-12-11 21:06:00) [13]> Ну, вроде, запустил... вроде, работает... и под w2k и под NT4 SP6a... а что?
А то, что у меня не работает :( а я хочу чтобы работало !!! Может кодом поделишься??
> Бррр. Ничего ... работать не будет (по-моему).
В сабже указано - Win2k поэтому и предлагаю CreateProcessWithLogonW (ну не работает у меня LogonUser и еще на десятке компов не работает).
CreateProcess.. = CreateProcessWithLogonW (времени небыло писать полностью). А про Win9x можешь не упоминать - естественно не на ней проверяю :)
> Кинь ссылку, плиз
C:\delphi\rsdn\forum\userlogon.html (т.е. нет у меня ссылки)
PS. Я тут немного не то ответил в ветке http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1008086912&n=5- если у тебя LogonUser работает может поможешь?
VladD2 (2001-12-11 05:15:00) [14]А ты запусти то, что ты написал и проверь работоспособность .Потом поделись впечатлениями..
Ну, вроде, запустил... вроде, работает... и под w2k и под NT4 SP6a... а что?
Может тебе самому попробовать? ;о)
Насчет CreateProcessWithLogon - не спорю -может ты и прав.. но он(CreateProcess..) работает через RunAs сервис (те только в Win2k)..
Бррр. Ничего не понял! Во-первых, в сабже именно w2k и указано, а во-вторых, запуск процессов с идентити отличной от интерактивного юзера возможен только под NT т.е. W2k. В 9x (по-моему) такое невозможно в принципе.
Короче, CreateProcessWithLogonW действительно работает начиная с w2k, а CreateProcessAsUser и LogonUser работают начиная с NT 3.51 (по крайней мере так написано в MSDN). Под 9x ни одна из этих функций не работала и работать не будет (по-моему).
Кстати, некто VladD2 на RSDN (в мае 2001) обсуждал эту проблему на форуме...
Чё-то я не помню такого. Кинь ссылку, плиз. Но сама проблема, вроде, обсуждалась.
Tosov (2001-12-10 23:06:00) [15]Кстати,некто VladD2 на RSDN (в мае 2001) обсуждал эту проблему на форуме...
Tosov_ (2001-12-10 08:16:00) [16]А ты запусти то, что ты написал и проверь работоспособность .Потом поделись впечатлениями..
Насчет CreateProcessWithLogon - не спорю -может ты и прав.. но он(CreateProcess..) работает через RunAs сервис (те только в Win2k)..
VladD2 (2001-12-10 00:17:00) [17]Ок. Дам шоколадную ( при встрече)
Ловлю на слове. ;)
Обычная прога - прога запущенная среднестатистическим юзером ( в общем не сервис)
Должна работать. Скорее всего не будет работать под Win9x. А под W2k и NT4 обязательно должна. Кстати, CreateProcessWithLogonW вроде именно ее и использует, для получения токена нащиты.
Tosov (2001-12-08 21:53:00) [18]Ок. Дам шоколадную ( при встрече)
Обычная прога - прога запущенная среднестатистическим юзером ( в общем не сервис)
VladD2 (2001-12-08 05:51:00) [19]Ну, если шоколадную, то давай! :)
PS
А что ты называешь обычной прогой?
Tosov_ (2001-12-08 05:30:00) [20]VlasD2
Если это будет работать в обычной проге - дам тебе медаль за отвагу и находчивость