Распространение ServiceSecurityContext - PullRequest
0 голосов
/ 01 февраля 2011

У меня есть приложение Winform, которое вызывает службу WCF. Проблема в том, что эта служба (A) называет себя другой (B), которая хочет получить доступ к ServiceSecurityContext.Name первоначального вызывающего абонента (идентификатор Winform).

Оба размещены на IIS и используют NetTcpBinding.

Я пытался добавить этот атрибут в метод службы B:

[OperationBehavior(TransactionScopeRequired = true,Impersonation=ImpersonationOption.Allowed)]

И я добавил поведение конечной точки для службы A:

<endpointBehaviors>
<behavior name="impBehavior">
    <clientCredentials>
        <windows allowedImpersonationLevel="Impersonation" />
    </clientCredentials>
</behavior>

Но это не работает. Что я могу сделать?

С наилучшими пожеланиями,

* * 1018 Stéphane. * * 1019

Ответы [ 3 ]

0 голосов
/ 01 февраля 2011

Если служба B находится на другом сервере, чем служба A, это не сработает, потому что олицетворение не может «выполнить двойной скачок» без очень определенных привилегий AD, предоставленных серверу (которые администраторы обычно не выдают, потому что они имеют значительные последствия для безопасности).

Если A и B находятся на одном и том же сервере, он должен работать, если вызов A для B настроен на использование олицетворения (и вызов A позволяет это).

0 голосов
/ 02 февраля 2011

Я наконец решил эту проблему. Проблема заключалась в том, что я настроил поведение конечной точки клиента в неправильном месте.

Он должен быть настроен на уровне Winform (для которого в качестве клиента используется служба A), а не для самой службы (в качестве клиента используется служба B).

Теперь все работает как положено.

Спасибо за вашу помощь.

ГТЦ, Stéphane.

0 голосов
/ 01 февраля 2011

Я думаю, что в вашей ситуации олицетворение должно быть обязательным, а не просто разрешенным.

Самый простой способ добиться этого - добавить поведение службы в файл конфигурации службы B с помощью этого элемента:

<serviceAuthorization impersonateCallerForAllOperations="true" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...