После прочтения части информации об аутентификации пользователей (как в SO, так и в Интернете в целом), становится достаточно очевидным, что «лучший» способ аутентификации пользователя (и, таким образом, обнаружения таких вещей, как пароль с истекшим сроком действия и т. Д.)вызывать Win32 LogonUser()
, а не пытаться использовать PrincipalContext.ValidateCredentials
в .NET.
Однако я не до конца понимаю, что на самом деле делает LogonUser - и, следовательно, какие накладные расходы он несет с собой? MSDN не совсем понятен в этом , часть, которая в основном касается меня, находится в самом конце, где говорится, что LogonUser вызывает NPLoginNotify (), и не совсем понятно, что это делает (кроме подготовки сценариев входа в систему),ни то, что происходит с результатами звонка.
Первоначально я был обеспокоен тем, что LogonUser загрузил профиль пользователя, но некоторые дальнейшие чтения поставили эту проблему в постель, как не проблема (если я не ошибаюсь в этом, но из того, что я могу сказать, LogonUser никогдазагружает профиль - это должно быть явно загружено через другой вызов функции).
Контекст для этого - веб-приложение интрасети, для которого требуется возможность аутентификации в активном каталоге, поэтому будет несколько входов в систему.и выходы из приложения: вероятно, не так много изначально, но может значительно возрасти в будущем.Кажется, что вызов LoginUser с типом LOGIN32_LOGIN_NETWORK
и последующим немедленным отбрасыванием токена, который он мне дает, может быть лучшим маршрутом вперед.
Есть ли какие-либо издержки, о которых я не знаю, или я простобесполезно беспокоиться?