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

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

1 голос
/ 29 апреля 2011

У меня есть службы WCF, размещенные в консольном приложении, и веб-приложение, обращающееся к его операциям.Я искал безопасность WCF, и в большинстве случаев веб-службы были размещены на IIS.Каким пунктам я должен следовать, чтобы реализовать безопасность транспортного уровня WCF в моем случае?

Я хочу

  1. Использование имени пользователя и пароля для выполнения операций WCF
  2. Используйте SSL для шифрования данных.

Если мои службы WCF размещены в консольном приложении.Есть ли какие-либо конфигурации IIS, которые я должен сделать?

Ответы [ 2 ]

3 голосов
/ 29 апреля 2011

Если вы хотите предоставить службу WCF через HTTP, вы можете использовать BasicHttpBinding с пользовательской конфигурацией:

<bindings>
  <basicHttpBinding>
    <binding name="secured">
      <security mode="TransportWithMessageCredential">
        <message clientCredentialType="userName" />
      </security>
    </binding>
  </basicHttpBinding>
</bindings>

<behaviors>
  <serviceBehaviors>
    <behavior name="securedService">
      <serviceMetadata httpsGetEnabled="true" />
      <serviceCredentials>
        <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="Namespace.Type, assembly" />
      </serviceCredentials>
    </behavior>
  </serviceBehaviors>
</behaviors>

<services>
  <service name="Namespace.Type" behaviorConfiguration="securedService">
    <host>
      <baseAddresses>
        <!-- some url -->
        <baseAddress baseAddress="https://localhost:8088/Service" />
      </baseAddresses>
    </host>
    <endpoint address="" contract="Namespace.Type" binding="basicHttpBinding" bindingConfiguration="secured" />
    <endpoint address="mex" contract="IMetadataExchange" binding="mexHttpsBinding" />
  </service>
</services>

Это создаст службу SOAP 1.1 с использованием HTTPS и профиля токена UserName для передачи учетных данных в сообщении.Он также будет предоставлять метаданные (WSDL) через HTTPS, а имя пользователя и пароль будут проверяться пользовательским валидатором .Проверка по умолчанию проверяет учетные записи Windows, но ее также можно перенастроить для использования поставщика членства ASP.NET.

Последнее, что вам нужно сделать, это разрешить HTTPS на используемом порту (в примере 8088).Для этого вам понадобится сертификат с закрытым ключом, установленный в хранилище сертификатов на машине (должен быть в Моем / Личном хранилище в LocalMachine).Вы можете создать самозаверяющий сертификат для тестирования.

Получив сертификат, вы должны назначить сертификат для порта с помощью netsh.Вы также должны разрешить приложению прослушивать порт с помощью netsh, в противном случае ваше консольное приложение будет работать от имени администратора (UAC - Windows Vista, 7, 2008, 2008 R2).

2 голосов
/ 29 апреля 2011

Если ваши службы WCF размещены в консольном приложении, IIS не имеет к ним никакого отношения, поэтому вам не нужно настраивать IIS или что-либо еще.

Для обеспечения безопасности транспортного уровня выможно использовать привязку WsHttp или NetTcp в сочетании с SSL.

Посмотрите http://www.dotnetspark.com/kb/1502-security-wcf--transport-level.aspx, http://www.packtpub.com/article/microsoft-wcf-security и http://dotnetrobert.com/?q=node/140.

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