Ошибка олицетворения при вызове веб-метода из SoapUI - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть веб-служба WCF (размещенная в моей службе Windows под учетной записью локальной системы). К веб-методам прикреплено [OperationBehaviorAttribute(Impersonation = ImpersonationOption.Required)]. NTLM аутентификация используется.

В реализации моего веб-метода я выдал себя за вызывающего и сделал кое-что. Для этого я использую ServiceSecurityContext.Current.WindowsIdentity. Если я не укажу правильные учетные данные при вызове веб-метода, веб-служба выдаст «401 Unauthorized».

Когда я вызываю метод из Chrome, идентификация и подражание Windows работают отлично. Я могу создать новый процесс под олицетворенным пользователем, который будет появляться в сеансе Windows этого пользователя (отличается от 0). Firefox также работает, когда я добавляю строку «localhost» в настройку network.automatic-ntlm-auth.trusted-uris. Но когда SoapUI вызывает метод, это удостоверение Windows не устанавливается должным образом. Вызывается веб-метод, поэтому NTLM работает в определенной степени, но он не работает должным образом. Вызов ServiceSecurityContext.Current.WindowsIdentity.Owner.IsAccountSid() возвращает false (Owner не учетная запись пользователя, а встроенная группа «Администраторы»). Создание нового процесса во время олицетворения создаст его в сеансе Windows 0.

Я рассмотрел HTTP-связь с Wireshark, и рукопожатие NTLM выглядит по-разному в Chrome и SoapUI. Хотя понятия не имею, что делать с этой информацией.

Как заставить SoapUI правильно работать с моим веб-сервисом и NTLM?

1 Ответ

0 голосов
/ 08 мая 2019

Хотя я не знаю, как решить проблему с WCF, я переключился на Web API и OWIN, и теперь у меня есть рабочее решение.

...