Как использовать безопасность сообщений и имя пользователя clientCredentialType без сертификата в службе WCF? - PullRequest
2 голосов
/ 18 января 2011

У меня есть служба WCF с wsHttpBinding, мои клиенты - это мое приложение Windows и мой веб-сайт.оба эти клиента являются потребителями моего сервиса.в моем сервисе я использовал безопасность сообщений и имя пользователя clientCredentialType для аутентификации клиентов.Я не хочу использовать какой-либо сертификат для этой аутентификации.как я?или вы предлагаете мне другое решение для этого?

Ответы [ 2 ]

3 голосов
/ 18 января 2011

Безопасность сообщений WsHttpBinding с учетными данными клиента UserName требует сертификата сервера.Единственный вариант - использовать учетные данные клиента Windows, но в этом случае ваш клиент и служба должны находиться в одном домене AD (или доверенных доменах).Если вы хотите защитить сообщение (зашифровать и подписать), вам нужна такая инфраструктура.

Редактировать:

На основании вашего комментария вам не нужна безопасность сообщений, вы толькохотите использовать профиль UserNameToken для передачи учетных данных клиента по незащищенному каналу.Это возможно в WCF 4 (и в более старых версиях со специальными КБ).Попробуйте это пользовательское связывание:

<customBinding>
  <binding name="UsernamePasswordOverHttp">
    <textMessageEncoding messageVersion="Soap11" />
    <security
      authenticationMode="UserNameOverTransport"
      messageSecurityVersion="WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10"
      allowInsecureTransport="true" />
    <httpTransport />
  </binding>
</customBinding>

Имейте в виду, что может быть некоторая проблема с автогенерацией WSDL для такой службы.Другой возможностью является использование ClearUserNameBidning .

1 голос
/ 18 января 2011

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

Схема не может быть вычислена для этой привязки, потому что у этой CustomBinding отсутствует TransportBindingElement.У каждой привязки должен быть хотя бы один элемент привязки, производный от TransportBindingElement.

и другие мои вопросы: для этого решения я использую из какого типа проекта в VS2010?сервисная библиотека WCF в проекте или веб-сайт сервисной службы WCF.какой?

спасибо за ваши ответы.

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