Сертификаты клиента Silverlight и SSL - PullRequest
2 голосов
/ 30 июня 2010

Может ли кто-нибудь указать мне правильное направление, как я могу использовать клиентские сертификаты SSL с Silverlight для доступа к полноценному веб-сервису?

Кажется, я ничего не могу найти о том, как с ними обращаться, и даже о том, поддерживаются ли они.

Приветствие.

Ответы [ 4 ]

1 голос
/ 08 июля 2010

Это зависит от того, используете ли вы стек HTTP браузера или клиентский стек HTTP.Клиентский стек не поддерживает клиентские сертификаты, точка.Стек браузера работает, и в значительной степени автоматически, если вы готовы жить с другими его ограничениями (отсутствие поддержки всех HTTP-глаголов, приведение кодов состояния ответа и т. Д.).

Я, однако, былстолкнуться с проблемой использования стека браузера с сертификатами клиента в сценарии OOB.При этих условиях загрузка модуля Prism завершается неудачно - запрос попадает в IIS, но без видимой причины вызывает ошибку сервера 500.Если я настрою IIS на игнорирование клиентских сертификатов или запусту приложение в браузере, оно будет работать нормально: - /

1 голос
/ 12 октября 2010

Слипджиг упомянул это:

"Стек браузера работает, и в значительной степени автоматически, если вы готовы жить с другими его ограничениями (отсутствие поддержки всех HTTP-глаголов, приведение кодов состояния ответа и т. Д.)."

Если это приемлемо для вас, посмотрите, как сами Microsoft справляются с этим в некоторых своих API, используя настраиваемый заголовок X-HTTP-метода, например, как они это делают для WCF и OData:

http://www.odata.org/developers/protocols/operations

В MSDN Microsoft также упоминает об использовании REST в сочетании с API REST на основе WCF в SharePoint 2010:

msdn.microsoft.com / EN-US / библиотека / ff798339.aspx

"На практике многие брандмауэры и другие сетевые посредники блокируют глаголы HTTP, отличные от GET и POST. Чтобы обойти эту проблему, службы данных WCF (и стандарт OData) поддерживают метод, известный как" туннелирование глаголов ". В этом методе Запросы, PUT, DELETE и MERGE отправляются в виде запроса POST, а заголовок X-HTTP-метода указывает фактический глагол, который получатель должен применить к запросу. Для получения дополнительной информации см. X-HTTP-метод в MSDN и OData. : Операции (метод туннелирования через раздел POST) на веб-сайте OData. "

У Дона Бокса также было несколько слов об этом, но в частности о GData:

www.pluralsight-training.net / сообщества / блоги / dbox / Архив / 2007/01/16 / 45725.aspx

«Если бы я создавал клиент GData, я искренне удивлялся, почему я вообще потрудился бы использовать методы DELETE и PUT, учитывая, что X-HTTP-Method-Override будет работать в большем количестве случаев / развертываний».

Существует статья о взаимодействии Silverlight и Java, которая также устраняет это ограничение Silverlight, давая тот же совет:

www.infoq.com / статьи / Silverlight-ява-Interop

"Silverlight поддерживает только методы HTTP GET и POST. Некоторые брандмауэры ограничивают использование HTTP-методов PUT и DELETE.

Важно отметить, что настоящая служба RESTful может быть создана (в соответствии со всеми перечисленными выше принципами REST) ​​только с использованием методов HTTP GET и POST, иными словами, архитектура REST не требует специального сопоставления с HTTP. Заголовок GData X-Http-Method-Override от Google является примером такого подхода.

Следующие переопределения методов HTTP могут быть установлены в заголовке для выполнения действий PUT и DELETE, если веб-службы интерпретируют заголовок X-HTTP-Method-Override на POST:

* X-HTTP-Method-Override: PUT
* X-HTTP-Method-Override: DELETE"

Надеюсь, это поможет -Josh

0 голосов
/ 16 января 2013
Dim url As Uri = New Uri(Application.Current.Host.Source, "../WebService.asmx")
Dim binding As New System.ServiceModel.BasicHttpBinding
If url.Scheme = "https" Then
    binding.Security.Mode = ServiceModel.BasicHttpSecurityMode.Transport
End If

binding.MaxBufferSize = 2147483647 'this value set to override a bug, 
binding.MaxReceivedMessageSize = 2147483647 'this value set to override a bug,
Dim proxy As New ServiceReference1.WebServiceSoapClient(binding, New ServiceModel.EndpointAddress(url))
proxy.InnerChannel.OperationTimeout = New TimeSpan(0, 10, 0)
0 голосов
/ 06 июля 2010

посмотрите на это.

http://support.microsoft.com/kb/307267

просто измените ваши URL-адреса на https

надеюсь, это поможет

...