Безопасность + удаленка + SSPI
От: Slicer [Mirkwood] Россия https://ru.linkedin.com/in/maksim-gumerov-039a701b
Дата: 31.08.12 06:23
Оценка:
Пишу SSPI-аутентификацию, напоролся на странный эффект. Если на клиенте залогинен доменный юзер через remote desktop, то на сервере нормально принимается через SSPI токен пользователя и можно у него опросить юзернейм и домен; но когда я пытаюсь проверить членство этого пользователя в группе (локальной на сервере), в которой этот доменный пользователь на самом деле состоит, мне говорят, что его в группе нет.

Код примерно такой:
sspi.FunctionTable.QuerySecurityContextToken(@hctx, @token);  // забрали токен из сформированного контекста SSPI
GetTokenInformation(token, TokenUser, userinfo, cnt, cnt);
LookupAccountSidW(nil,userinfo^.User.Sid, nname, cbnname, domname, cbdomname,peUse);

//...тут для проверки вывожу name и domname...

nname := "имя группы"; //без имени компа (т.к. с именем компа вообще группу не находит)
LookupAccountNameW(NIL, nname, _psid, cbSid, domname, cbdomname, peUse); //получаем SID группы
CheckTokenMembership(token, _psid, ingroup); //проверяем юзера на вшивость


Группа (на которую проверяется) в двух случаях была одна и та же.

Я вроде бы понимаю, что в переданном мне токене какие-то группы могли быть отключены (типа, restricted token), но почему именно моя? И как мне узнать, в этом ли дело? Или может кто-то сразу скажет, чем тут пахнет..

Вообще-то, я впервые столкнулся с безопасностью windows, так что могли быть и какие-то тупые ошибки. В общем, слушаю..

Slicer
Специалист — это варвар, невежество которого не всесторонне :)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.