2015-11-05 1 views
0

У меня есть следующие приборы:WCF Керберос делегации услуг на той же машине

Client -> MiddleWS (ISS-hosted WCF) -> DestWS1 and DestWS2 (Self-hosted WCF services) 

Все машины работают на внутренней сети с Active Directory. Мне нужно иметь возможность распространять учетные данные от клиента до DestWS1 и DestWS2 (эти два запускаются в самообслуживающей среде на одном сервере, но с разными адресами). Все работает нормально, если я делаю запрос от клиента к MiddleWS, который затем отправляет запрос на DestWS1 или DestWS2. Однако, если я хочу сделать два последующих запроса от MiddleWS до DestWS1 и DestWS2, то второй запрос не удастся (дает разрешения).

DestWS1 и DestWS2 имеют разные адреса (f.x., http://server/DestWS1.svc и http://server/DestWS2.svc). У меня есть два клиента WCF, созданные из их WSDL. Похоже, если я создаю двух клиентов (отсюда два канала), второй не удастся (что-то происходит с маркером kerberos). Если я использую только один клиент, но делаю два вызова от него к одной и той же службе, оба запроса работают отлично. Как только я закрываю канал, токен больше не переносится, похоже.

Любой, у кого есть подобные проблемы?

+0

Вы настроили соответствующие SPN и Делегация в AD? Какая ошибка? –

+0

Да, делегирование разрешено на среднем сервере и есть SPN. Использование Network Monitor все кажется прекрасным (т. Е. Никаких ошибок при общении с DC). Ошибка, которую я получаю, заключается в том, что у пользователя нет разрешений. Из этой ошибки я вижу, что пользователь - это моя машина (MiddleWSServer $), а не мой пользователь AD. –

ответ

0

Очевидно, проблема связана с асинхронной связью. При вызове обеих служб async аутентификация теряется. Существует два возможных решения: - переключиться на синхронные запросы - изменить alwaysFlowImpersonationPolicy на true в конфигурации (я еще не пробовал, но многие другие указывают на это как на решение):

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

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