Безопасность WCF в интернет-сценарии - PullRequest
3 голосов
/ 05 октября 2010

У меня есть служба WCF, размещенная в службе Windows.Клиенты с разных платформ получат доступ к услуге.Теперь я хотел бы добавить базовый механизм безопасности.В идеале клиенты должны использовать имя пользователя / пароль для аутентификации.

Какие настройки привязки я должен использовать в этом сценарии и как я могу аутентифицировать клиента?Функциональная совместимость важнее, чем очень безопасные решения.Если возможно, клиент не должен принуждаться к использованию сертификата или чего-то подобного.Кроме того, проверка подлинности не должна быть тесно связана с базой данных SQL Server.Я хотел бы вручную проверить учетные данные клиента.

Спасибо за вашу помощь

Ответы [ 2 ]

3 голосов
/ 05 октября 2010

Лучшим для вашего случая может быть BasicHttpBinding с безопасностью, установленной на TransportWithMessageCredentials, и типом учетных данных, равной UserName. В этом случае ваша служба будет защищена с помощью HTTPS (требуется сертификат сервера для SSL, который должен быть доверенным на клиентах), а аутентификация будет обеспечиваться на уровне сообщений с помощью профиля токена имени пользователя (заголовок SOAP). Вы можете реализовать свой собственный средство проверки пароля .

Базовый скелет конфигурации BasicHttpBinding:

<bindings>
  <basicHttpBinding>
    <binding name="Secured">
      <security mode="TransportWithMessageCredential">
        <message clientCredentialType="UserName" />
      </security>
    </binding>
  </basicHttpBinding>
</bindings>

Если вы не хотите использовать HTTPS, вы можете создать пользовательскую привязку с помощью HttpTransport, TextMessageEncoding и с режимом безопасности, установленным в UserNameOverTransport. Но вы должны установить для allowInsecureTransport значение true (учтите, что в этом параметре есть ошибка с генерацией WSDL).

Скелет конфигурации пользовательского связывания:

<bindings>
  <customBinding>
    <binding name="Secured">
      <security authenticationMode="UserNameOverTransport" allowInsecureTransport="true" />
      <textMessageEncoding messageVersion="Soap11" />
      <httpTransport />
    </binding>
  </cutomBinding>
</bindings>
1 голос
/ 05 октября 2010

Информацию о том, как этого добиться, см. В разделе «Интернет-сценарии приложений»: Сценарии приложений CodePlex

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