Накладные расходы LogonUser? - PullRequest
       5

Накладные расходы LogonUser?

1 голос
/ 08 сентября 2011

После прочтения части информации об аутентификации пользователей (как в SO, так и в Интернете в целом), становится достаточно очевидным, что «лучший» способ аутентификации пользователя (и, таким образом, обнаружения таких вещей, как пароль с истекшим сроком действия и т. Д.)вызывать Win32 LogonUser(), а не пытаться использовать PrincipalContext.ValidateCredentials в .NET.

Однако я не до конца понимаю, что на самом деле делает LogonUser - и, следовательно, какие накладные расходы он несет с собой? MSDN не совсем понятен в этом , часть, которая в основном касается меня, находится в самом конце, где говорится, что LogonUser вызывает NPLoginNotify (), и не совсем понятно, что это делает (кроме подготовки сценариев входа в систему),ни то, что происходит с результатами звонка.

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

Контекст для этого - веб-приложение интрасети, для которого требуется возможность аутентификации в активном каталоге, поэтому будет несколько входов в систему.и выходы из приложения: вероятно, не так много изначально, но может значительно возрасти в будущем.Кажется, что вызов LoginUser с типом LOGIN32_LOGIN_NETWORK и последующим немедленным отбрасыванием токена, который он мне дает, может быть лучшим маршрутом вперед.

Есть ли какие-либо издержки, о которых я не знаю, или я простобесполезно беспокоиться?

1 Ответ

1 голос
/ 08 сентября 2011

Страница MSDN кажется вполне понятной:

Тип входа LOGON32_LOGON_NETWORK наиболее быстрый, но имеет следующие ограничения:

Функция возвращает токен олицетворения, а не первичный токен. Вы не можете использовать этот токен непосредственно в функции CreateProcessAsUser. Однако вы можете вызвать функцию DuplicateTokenEx для преобразования токена в основной токен, а затем использовать его в CreateProcessAsUser.

Если преобразовать токен в основной токен и использовать его в CreateProcessAsUser для запуска процесса, новый процесс не сможет получить доступ к другим сетевым ресурсам, таким как удаленные серверы или принтеры, через перенаправитель. Исключением является то, что если сетевой ресурс не контролируется доступом, то новый процесс сможет получить к нему доступ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...