Рассмотрим два консольных приложения .NET, Client.exe и Server.exe, которые выполняются на двух разных компьютерах в одном домене Windows внутренней сети.
Сервер работает под выделенной учетной записью домена с довольно низким уровнем привилегий.,Он имеет доступ только к нескольким каталогам и базам данных.
Клиент работает под учетной записью домена пользователя, запустившего его.
Клиент отправляет простые инструкции и запросы на сервер через сокет-соединение иСервер покорно отвечает безотносительно к личности человека, запустившего Клиент.Я хотел бы изменить это, изменив протокол связи таким образом, чтобы Клиент предоставил Серверу некоторые неопровержимые доказательства того, что учетная запись пользователя Клиента должным образом аутентифицирована в домене.
Q.Какую информацию Клиент может отправить на сервер, который при десериализации и распаковке Сервером позволяет Серверу проверять личность учетной записи пользователя Клиента и его успешную аутентификацию в домене?
Пример того, что я хочу:
Клиент: (1) ОТПРАВЛЕНО: Меня зовут DOMAINNAME \ username, и я успешно прошел сеанс Windows с аутентификацией [некоторый идентификатор аутентификации известен только для клиента и домена].(2) ОТПРАВЛЕНО: Запрос
Сервер: (1) С помощью инфраструктуры домена проверяется, что отправленные клиентом доказательства действительно представляют собой успешно аутентифицированный сеанс для DOMAINNAME \ username.(2) Проверяет, что DOMAINNAME \ username является членом группы Windows, которой разрешено делать запросы.(3) Обрабатывает запрос и отправляет ответ.
Серверу не требуется выдавать себя за пользователя Клиента, и при этом я не хочу, чтобы Клиент передавал свое имя пользователя и пароль на Сервер.Вот почему вопрос Как проверить учетные данные домена? не совсем подходит для того, что я пытаюсь сделать.
Даже не уверен, возможно ли то, что я пытаюсь сделать, но если это так, не могли бы вы указать мне правильное направление?
Лучше всего,
Фест