WCF - предотвращение несанкционированных клиентов - PullRequest
2 голосов
/ 14 декабря 2009

У меня есть служба WCF, к которой у меня есть доступ только к моим приложениям. Мои приложения состоят из традиционного веб-интерфейса, использующего JQuery, и интерфейса Silverlight. Ни один из этих интерфейсов не требует от пользователя входа в систему.

Есть ли способ, с помощью которого я могу указать службе WCF разрешать только клиентам, которые происходят из моего домена? Если да, то как?

Спасибо!

Ответы [ 4 ]

2 голосов
/ 14 декабря 2009

Да, конечно, вы можете - просто требовать учетные данные Windows (т. Е. Учетную запись Active Directory в вашем домене) от ваших абонентов.

Любой, кто не прошел аутентификацию на вашем домене, будет отклонен.

Вы можете сделать это, указав либо netTcpBinding с безопасностью транспорта (если все находится за корпоративным брандмауэром), либо wsHttpBinding с безопасностью сообщений:

<bindings>
   <netTcpBinding>
      <binding name="DomainUsersOnly">
         <security mode="Transport">
            <transport clientCredentialType="Windows" />
         </security>
      </binding>
   </netTcpBinding>
   <wsHttpBinding>
      <binding name="HttpDomainUsersOnly">
         <security mode="Message">
            <message clientCredentialType="Windows" />
         </security>
      </binding>
   </wsHttpBinding>
</bindings>

Теперь все, что вам нужно сделать, это указать одну из этих конфигураций привязки в ваших конечных точках:

<endpoint name="whatever"
          address="......"
          binding="netTcpBinding"
          bindingConfiguration="DomainUsersOnly"
          contract="IYourservice" />

и тебе надо идти.

1 голос
/ 14 декабря 2009

Если предполагается, что все ваши законные пользователи находятся во внутренней корпоративной локальной сети (в одной подсети), вы можете заблокировать ее по IP-адресу, используя такой подход, как this . Вы также можете привязать его к нескольким конкретным IP-маскам, если хотите.

Но если вы хотите, чтобы законные пользователи могли поразить его из любого места, то это не очень хороший подход. Аутентификация будет лучше в этом случае.

0 голосов
/ 14 декабря 2009

Если вы не рассматриваете проверку подлинности Windows (поскольку запросы поступают с вашего домена), предпочтительным способом сделать это будет другой уровень - через брандмауэры. На этом уровне вы можете ограничить входящий трафик известным набором IP-адресов. Это будет так далеко, так как IP-адреса могут быть подделаны, но это открытая служба, так что вы идете. Лучшей альтернативой будет и брандмауэры и аутентификация Windows.

Кроме того, вы можете проверить IP-адреса клиентов в WCF, запросив OperationContext.Current.IncomingMessageProperties.

0 голосов
/ 14 декабря 2009

Вы можете добавить ограничение безопасности в IIS, чтобы разрешить только звонки из домена в веб-службу.

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