0

У меня есть приложение клиентской консоли, которое имеет некоторые учетные данные пользователя - домен \ пользователь и пароль с открытым текстом. Клиентское приложение получает объект Windowsidentity для этого пользователя, вызывая API winonUser (dwLogonType: LOGON32_LOGON_NETWORK) win32. Я использую windowsidentity для олицетворения и вызова службы WCF (размещенного на другой машине). Служба WCF настроена на использование протокола TCP с интегрированной защитой Windows. Вызов с ошибкой SecurityNegotiation невозможен с ошибкой: удаленный сервер не удовлетворял требованию взаимной аутентификации.Требуется ли включить делегирование Windows для учетной записи службы сервера?

Мое предположение заключается в том, что сервер видит анонимный идентификатор клиента, который он отклоняет, поскольку конечная точка настроена на использование встроенной аутентификации Windows. Я предполагаю, что учетная запись сервера должна быть настроена для делегирования Windows. Верно ли мое предположение?

Кроме того,

  1. Является ли мой выбор dwLogonType = LOGON32_LOGON_NETWORK правильно?
  2. Может ли токен, возвращенный LogOnUser (dwLogonType = LOGON32_LOGON_NETWORK), использоваться для выполнения удаленных вызовов WCF?
+1

'LOGON32_LOGON_NETWORK' не предоставляет доступа к другим серверам. 'LOGON32_LOGON_NETWORK_CLEARTEXT' делает. – arx

ответ

1

Тот, кто олицетворяет себя, должен иметь право на передачу, если он хочет получить доступ к сетевым ресурсам под идентификацией пользователя. В указанном сценарии клиентская учетная запись (в соответствии с которой выполняется клиент) должна иметь право делегирования, поскольку она олицетворяет некоторого пользователя и хочет распространять идентификатор пользователя на удаленную службу WCF.

Is my choice of dwLogonType = LOGON32_LOGON_NETWORK correct?

No.

Can the token returned by LogOnUser (dwLogonType = LOGON32_LOGON_NETWORK) be used for making remote WCF calls?

С dwLogonType опцией = LOGON32_LOGON_NETWORK, LogonUser возвращает маркер, который не может быть использован для propogating идентификации пользователя к сетевым ресурсам.

Опция dwLogonType = LOGON32_LOGON_NETWORK_CLEARTEXT с LogonUser исправила проблему. С помощью этой опции LogonUser сгенерировал токен, способный к доступу к сетевым ресурсам под идентификатором пользователя.

Я отдаю полный кредит на arx для моего решения. Только с его комментарием я мог решить проблему.

 Смежные вопросы

  • Нет связанных вопросов^_^