WCF определяет, какая привязка была вызвана - PullRequest
0 голосов
/ 30 июля 2011

У меня есть веб-служба WCF, и ее можно вызывать через несколько конечных точек.Как динамически определить, какая конечная точка была использована?

Например, моя служба может вызываться через HTTPS с привязкой с именем «WSHttpBinding_TransportSecurity_IMyService» или через привязку встроенной аутентификации Windows с именем «WSHttpBinding_WindowsSecurity_IMyService».В зависимости от того, какой из них был вызван, мне нужно предпринять немного другое действие, чтобы определить личность клиента.

Как я могу подойти к этому?(Если требуются какие-либо более конкретные детали, я могу их предоставить.)

Ответы [ 3 ]

2 голосов
/ 30 июля 2011

Если вам нужно знать привязку источника, чтобы определить личность вызывающего абонента, вы делаете что-то не так.Ваш сервис должен быть независимым от протокола.Управление идентификацией может осуществляться с использованием политик аутентификации.

0 голосов
/ 18 ноября 2013

Отвечая на исходный вопрос:

Вы можете использовать свойство To в IncomingMessageHeaders, которое дает вам URI, который использовался клиентом.

OperationContext contect = OperationContext.Current;
MessageHeaders messageHeaders = contect.IncomingMessageHeaders;
Uri To = messageHeaders.To;
0 голосов
/ 30 июля 2011

Не можете ли вы попытаться получить текущий идентификатор пользователя Windows

WindowsIdentity callerWindowsIdentity = ServiceSecurityContext.Current.WindowsIdentity;

и если оно пустое, попробуйте использовать версию с именем пользователя / паролем?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...