Как я могу отправить учетные данные пользователя для использования на удаленной машине с помощью WCF?

2

У меня две машины, мы будем называть их машиной A и машиной B. В машине B работает служба Windows, написанная на С#.net, в качестве учетной записи Local System. Машина A сообщает службе B машины (используя WCF), чтобы открыть файл, расположенный в сети. Поскольку локальная система не является сетевым пользователем, она не имеет доступа к сетевым файлам и не может открыть файл. В настоящее время я читаю файлы с машины A и сериализую их как строки на машину B, а затем записываю их локально на B. Я рассмотрел возможность создания общей сетевой учетной записи для машины B, поэтому она может иметь доступ к сети, однако это нежелательно. Есть ли способ, которым я могу открыть открытые файлы машины B, используя учетную запись пользователя машины A? Я взглянул на классы идентификации подлинности системы безопасности, будет ли это случай использовать их?

Теги:
permissions
windows-services
wcf

1 ответ

3
Лучший ответ

MSDN - Как: олицетворять клиента на службе

Выдача себя за клиента в Windows Служба связи (WCF) позволяет службе выполнять действия от имени клиента. Для действий с учетом списка контроля доступа (ACL) проверки, такие как доступ к каталогам и файлы на машине или доступ к База данных SQL Server, проверка ACL против учетной записи пользователя клиента

Также не забудьте настроить службу для использования проверки подлинности Windows и использовать поддерживаемое связывание.

  • 0
    Хорошо, похоже, у меня это в основном работает, однако, когда я проверяю client.ClientCredentials.Windows.ClientCredentials.UserName, оно кажется пустым. Похоже, что это не получает мои учетные данные из Active Directory, но все остальное ведет себя как следует.
  • 0
    @MGSoto, ClientCredentials.Windows.ClientCredentials.UserName предназначен не для получения учетных данных клиента, а для предоставления другого набора учетных данных Windows, если это необходимо (в основном свойство только для набора), чтобы получить текущего пользователя, используя Environment.UserName или System.Windows. Forms.SystemInformation.UserName ... но есть и другие способы
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню