gina, wlxLoggedOutSas
От: Tyro  
Дата: 21.05.04 10:23
Оценка:
Hello, All.

Пытаюсь реализовать собственную gina.dll. Все функции переписаны по примеру из msdn. Добавлен код для возвращения LogonSID.

Фишка в том, что после логина имя юзера и пароль почему- то не сохраняются.
Т.е. WlxLoggedOutSas возвращает указатель на заполненную структуру типа PWLX_MPR_NOTIFY_INFO. Но когда вызывается "родная" MS функция WlxDisplaySasNotice, выдается сообщение типа "Компьтер заблокирован только _____ или админ может разблокировать", то имя юзера отсутствует. Разблокировать не получается и плюс даже админ не может разблокировать.
Конечно, WlxDisplaySasNotice и WlxWkstaLockedSas переписаны на свои. Под 2K- все нормально. Но в XP некоторые программы, которые используют БД связанную с аккаунтом юзера, не находят данные привязанные к этому аккаунту.
Интересно, профайл грузится (winlogon не выдает ошибки, что не может загрузить профайл), юзер десктоп для залогиненого юзера тоже на месте. С привилегиями тоже все нормально.
??????
Когда проверяю DACL, то залогиненный юзер выглядит как
None [CompName]\Administrator or None[CompName]\Users.
None даже не Anonimous.

Может у кого есть какие соображения по этому поводу? Поделитесь, pls.
Re: gina, wlxLoggedOutSas
От: .Mistery Беларусь  
Дата: 21.05.04 10:39
Оценка: 1 (1)
Здравствуйте, Tyro, Вы писали:

T>Hello, All.


T>Пытаюсь реализовать собственную gina.dll. Все функции переписаны по примеру из msdn. Добавлен код для возвращения LogonSID.


T>Фишка в том, что после логина имя юзера и пароль почему- то не сохраняются.

T>Т.е. WlxLoggedOutSas возвращает указатель на заполненную структуру типа PWLX_MPR_NOTIFY_INFO. Но когда вызывается "родная" MS функция WlxDisplaySasNotice, выдается сообщение типа "Компьтер заблокирован только _____ или админ может разблокировать", то имя юзера отсутствует. Разблокировать не получается и плюс даже админ не может разблокировать.

А что значит родная? Она не должна быть родной, ее тоже нужно переписывать, все ф-и нужно переписывать, ну хотя бы заглушки ставить! Потому как в WlxInitialize ты формируешь свой контекст GINA из своей DLL и родные ф-и MS уже вызывать нельзя, так как у них контекст не сформирован!

Вот, это первое соображение!

Удачи!
... << RSDN@Home 1.1.3 beta 1 >>
Мы — маньяки, должны помогать друг другу!
Re[2]: gina, wlxLoggedOutSas
От: Tyro  
Дата: 24.05.04 00:32
Оценка:
Здравствуйте, .Mistery, Вы писали:

T>>Фишка в том, что после логина имя юзера и пароль почему- то не сохраняются.

T>>Т.е. WlxLoggedOutSas возвращает указатель на заполненную структуру типа PWLX_MPR_NOTIFY_INFO. Но когда вызывается "родная" MS функция WlxDisplaySasNotice, выдается сообщение типа "Компьтер заблокирован только _____ или админ может разблокировать", то имя юзера отсутствует. Разблокировать не получается и плюс даже админ не может разблокировать.

M>А что значит родная? Она не должна быть родной, ее тоже нужно переписывать, все ф-и нужно переписывать, ну хотя бы заглушки ставить! Потому как в WlxInitialize ты формируешь свой контекст GINA из своей DLL и родные ф-и MS уже вызывать нельзя, так как у них контекст не сформирован!


Да все переписано и заглушки поставлены. Это работает.
Просто хочется разобраться, насколько правильно реализован алгоритм. Так вот когда комбинирую свои и "родные" функции, выходит, что нужно еще что- то делать.
И кстати по поводу контекста.
В msdn
typedef struct {
HANDLE hWlx;
LPWSTR station;
PWLX_DISPATCH_VERSION_1_3 pWlxFuncs;
HANDLE hDllInstance;
HANDLE UserToken;
} GINA_CONTEXT, *PGINA_CONTEXT;
Но во многих примерах GINA- контекст имеет тип PGlobals. И как раз член этой структуры pAccount.
Подскажите, pls, где можно посмотреть формат PGlobals.
Re[3]: gina, wlxLoggedOutSas
От: .Mistery Беларусь  
Дата: 24.05.04 09:50
Оценка:
Здравствуйте, Tyro, Вы писали:

T>Да все переписано и заглушки поставлены. Это работает.
T>Просто хочется разобраться, насколько правильно реализован алгоритм. Так вот когда комбинирую свои и "родные" функции, выходит, что нужно еще что- то делать.



Я немного не понял, что ты тут имел в виду?


T>И кстати по поводу контекста.
T>В msdn
T>typedef struct {
T> HANDLE hWlx;
T> LPWSTR station;
T> PWLX_DISPATCH_VERSION_1_3 pWlxFuncs;
T> HANDLE hDllInstance;
T> HANDLE UserToken;
T>} GINA_CONTEXT, *PGINA_CONTEXT;



Это всего лишь одна из возможных реализаций. Помимо обязательных параметров (обязательных тоже условно, просто они наиболее часто используются в ф-ях GINA ) ты можешь запихнуть туда любое кол-во данных которые тебе понадобятся!


T>Но во многих примерах GINA- контекст имеет тип PGlobals. И как раз член этой структуры pAccount.
T>Подскажите, pls, где можно посмотреть формат PGlobals.



Что за PGlobals? кто такой?
... << RSDN@Home 1.1.3 beta 1 >>
Мы — маньяки, должны помогать друг другу!
Re[4]: gina, wlxLoggedOutSas
От: Tyro  
Дата: 25.05.04 01:01
Оценка:
Здравствуйте, .Mistery, Вы писали:

M>

T>>Да все переписано и заглушки поставлены. Это работает.
T>>Просто хочется разобраться, насколько правильно реализован алгоритм. Так вот когда комбинирую свои и "родные" функции, выходит, что нужно еще что- то делать.



M>Я немного не понял, что ты тут имел в виду?


А что здесь понимать. Вполне очевидно, что реальная msgina работает по несколько иному алгоритму и использует кучу недокументированных параметров. Потому и когда не все фунции переписаны, то полно глюков.


T>>И кстати по поводу контекста.

T>>} GINA_CONTEXT, *PGINA_CONTEXT;


M>Это всего лишь одна из возможных реализаций. Помимо обязательных параметров (обязательных тоже условно, просто они наиболее часто используются в ф-ях GINA ) ты можешь запихнуть туда любое кол-во данных которые тебе понадобятся!


Ага, я и пытаюсь выяснить, что туда ms передает.

M>Что за PGlobals? кто такой?


Ага, тоже хотелось бы знать. По крайней мере ms туда пишет имя юзера, домен и т.п.
Re[5]: gina, wlxLoggedOutSas
От: .Mistery Беларусь  
Дата: 25.05.04 09:26
Оценка:
Здравствуйте, Tyro, Вы писали:

M>>Я немного не понял, что ты тут имел в виду?

T>А что здесь понимать. Вполне очевидно, что реальная msgina работает по несколько иному алгоритму и использует кучу недокументированных параметров. Потому и когда не все фунции переписаны, то полно глюков.


Ну и бог с ним с ее алгоритмом. Конечно там будет много чего, ты же посмотри, MS GINA предоставляет довольно сложный графический интерфейс при аутентификации, кто ты думаешь это все рисует — MS GINA и рисует! Но касательно алгоритма взаимодействия GINA и winlogon — это уж остается неизменным, кто бы GINA не переписывал.


M>>Это всего лишь одна из возможных реализаций. Помимо обязательных параметров (обязательных тоже условно, просто они наиболее часто используются в ф-ях GINA ) ты можешь запихнуть туда любое кол-во данных которые тебе понадобятся!

T>Ага, я и пытаюсь выяснить, что туда ms передает.


А зачем тебе это нужно? В реализации MS GINA очень много всякой всячины, в том числе, как я говорил выше, и реализация GUI. Она может передавать туду кучу только ей одной понятных данных. Тебе то они зачем?

M>>Что за PGlobals? кто такой?

T>Ага, тоже хотелось бы знать. По крайней мере ms туда пишет имя юзера, домен и т.п.


Да где ты это увидел? Поделись!

А по поводу структуры WLX_MPR_NOTIFY_INFO которая заполняется в wlxLoggedOutSas, она конечно обязательная и NULL'ы там не прокатят, но к аутентификации пользователя, по большому счету, она никакого отношения не имеет. Winlogon использует эти данные для передачи сетевым провайдерам.

Удачи!
... << RSDN@Home 1.1.3 beta 1 >>
Мы — маньяки, должны помогать друг другу!
Re[3]: gina, wlxLoggedOutSas
От: ffk  
Дата: 26.05.04 08:00
Оценка:
Здравствуйте, Tyro, Вы писали:

T>И кстати по поводу контекста.

T>В msdn
T>typedef struct {
T> HANDLE hWlx;
T> LPWSTR station;
T> PWLX_DISPATCH_VERSION_1_3 pWlxFuncs;
T> HANDLE hDllInstance;
T> HANDLE UserToken;
T>} GINA_CONTEXT, *PGINA_CONTEXT;
T>Но во многих примерах GINA- контекст имеет тип PGlobals. И как раз член этой структуры pAccount.
T>Подскажите, pls, где можно посмотреть формат PGlobals.

В WinXP используется PWLX_DISPATCH_VERSION_1_4 возможно по этому
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.