Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

авторизация в w2k [D6, Win2k]


Страницы:   1 2

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
Если это будет работать в обычной проге - дам тебе медаль за отвагу и находчивость


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо