Как получить WindowsIdentity для удаленного вошедшего в систему пользователя?
Я работаю над клиент-серверным приложением со следующими деталями:
Client(C++) -----------HTTPS--- Server (C#/WCF)
Сервер:
- С пользователями в домене Windows Active Directory
- Служба WCF, работающая в IIS, предоставляющая службу аутентификации для Windows AD
- Предоставляет API аутентификации на основе REST, который использует Windows API logonUser.
Клиент:
- Клиент использует REST SDK (на основе Visual Studio 2013) для подключения к серверу
- Клиент предоставляет API аутентификации для аутентификации с использованием HTTPS.
В настоящее время я работаю для проверки подлинности пользователя Windows, вошедшего в систему на клиенте на сервере:
- Пользователь AD входит в клиент и вызывает API аутентификации
- Данные текущего зарегистрированного пользователя должны быть отправлены на сервер с использованием HTTPS (конечно, только имя пользователя)
- Создайте структуру WindowsIdentity с информацией, полученной от клиента.
Я пробовал следующее:
- Чтобы получить SID с клиентского компьютера и передать его на сервер. Воссоздайте WindowsIdentity из SID входа клиента.
- Я не мог получить WindowsIdentity от переданного SID.
Вопросы:
- Как получить идентификатор Windows на сервере (C#) из SID вошедшего в систему пользователя AD, переданного от клиента?
- Есть ли другие лучшие способы для достижения вышеуказанной настройки?
1 ответ
Ты пытался
ServiceSecurityContext.Current.WindowsIdentity.Name
но нет способа конвертировать формат имени пользователя без запроса в Active Directory. Поскольку это так, нет необходимости создавать WindowsPrincipal для проверки членства в группе, поскольку для этого, вероятно, потребуется еще одно подключение к AD. попробуйте использовать решение, представленное в этой ссылке