Я хотел бы использовать модель аутентификации Windows для аутентификации пользователей, использующих мое приложение WinForms на C # 3.5:
- Пользователь, вошедший в Windows, автоматически вошел в мое приложение.
- Если пользователь хочет войти в систему явным образом, его имя пользователя и пароль должны быть проверены Windows или, что еще лучше, по запросу Windows со стандартным диалогом Windows.Результатом должен стать еще один
WindowsIdentity
объект.
Первый был очень легко решить давным-давно: я прочитал
WindowsIdentity identity = WindowsIdentity.GetCurrent();
Просто чтобы убедиться, я проверяю
if (identity.IsAuthenticated) { ... }
Во втором случае я обнаружил некоторые вызовы API в других вопросах и ответах SO, но я почти уверен, должен быть управляемый способ для этого, я не прав?
Далее мне интересно, является ли мой подход для 1. безопасным и уместным.Спасибо за ваш отзыв!
Обновление: По словам Ивана, я должен использовать подход P / Invoke.Это в принципе нормально, но тогда мне все еще нужен способ получить объект WindowsIdentity
для этого определенного пользователя, у которого для свойства IsAuthenticated
установлено значение true.Сам по себе вызов P / Invoke не возвращает такой объект. Как это можно сделать?