Как получить 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.

Вопросы:

  1. Как получить идентификатор Windows на сервере (C#) из SID вошедшего в систему пользователя AD, переданного от клиента?
  2. Есть ли другие лучшие способы для достижения вышеуказанной настройки?

1 ответ

Ты пытался

ServiceSecurityContext.Current.WindowsIdentity.Name

но нет способа конвертировать формат имени пользователя без запроса в Active Directory. Поскольку это так, нет необходимости создавать WindowsPrincipal для проверки членства в группе, поскольку для этого, вероятно, потребуется еще одно подключение к AD. попробуйте использовать решение, представленное в этой ссылке

Другие вопросы по тегам