Вызов функции анонимно в сервисе WCF с режимом защиты сообщений - PullRequest
0 голосов
/ 14 июля 2011

Я создал службу WCF с WSDualHttpBinding. Режим безопасности не указан, поэтому он имеет значение WSDualHttpSecurityMode.Message.

Работает нормально, подключение клиента к серверу с разрешенными учетными данными.

Когда я подключаюсь к серверу с учетными данными, которые не разрешены, я получаю исключение SecurityNegotiationException.

Все, что я сейчас хочу сделать, это то, что в сервисе есть одна функция, которую можно вызывать анонимно.

Поэтому я хочу попытаться вызвать службу, и когда мои учетные данные не разрешены, я хочу вызвать функцию GetDescription (), которая выдаст мне описание службы.

Причина в том, что мы предоставляем некоторые услуги и обнаруживаем их по трансляции. Если есть служба, которой клиенту не разрешено, я хочу увидеть некоторые подробности из службы, чтобы решить эту проблему путем перенастройки службы.

1 Ответ

0 голосов
/ 14 июля 2011

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

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

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

...