Защита службы WCF - PullRequest
       0

Защита службы WCF

0 голосов
/ 17 декабря 2010

Я пытаюсь настроить безопасность веб-службы WCF, используя атрибут ProtectionLevel:

[ServiceContract(ProtectionLevel= ProtectionLevel.EncryptAndSign)]

Это компилируется, но Visual Studio выдает исключения, когда я пытаюсь обновить ссылку на службу в другом проекте(то же решение).

System.InvalidOperationException: сообщение запроса должно быть защищено.Это требуется при выполнении операции с контрактом ('IStorageService', 'tempuri.org/';).Защита должна обеспечиваться связыванием («WSHttpBinding», «tempuri.org/»;).

Что еще мне нужно настроить, чтобы заставить это работать?

Ответы [ 2 ]

7 голосов
/ 18 декабря 2010

Ваш атрибут ServiceContract указывает, что для службы требуется защищенный канал для всех операций, с подписью сообщения (сообщение содержит цифровую подпись, которая может доказать, что оно не было подделано) и шифрованием сообщения (байты сообщение шифруется при передаче по сети).

Ваш клиентский код (т. Е. В проекте, который вызывает сервис) должен удовлетворять этим требованиям. Если в этом проекте используется BasicHttpBinding с настройками по умолчанию, то требования службы не будут выполнены (по умолчанию безопасность отключена для BasicHttpBinding). Если вы сконфигурируете проект клиента для использования вместо него WsHttpBinding с его настройками по умолчанию, исключение должно исчезнуть (по умолчанию для этой привязки включен EncryptAndSign).

1 голос
/ 09 июля 2013

ProtectionLevel позволяет разработчику установить минимальный уровень, которому должна соответствовать привязка. Когда служба развернута, фактическая привязка, указанная в конфигурации, может поддерживать или не поддерживать минимальный уровень. Например, по умолчанию класс BasicHttpBinding не обеспечивает безопасность (хотя он может быть включен). Следовательно, использование его с контрактом, для которого заданы какие-либо параметры, кроме None, приведет к возникновению исключения. см здесь

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