2013-09-04 2 views
0

Нам необходимо создать службу WCF (.NET 4.0), которая будет использоваться клиентом за пределами нашей организации.Безопасность WCF с балансиром нагрузки

Дело в том, что у нас есть два сервера, которые находятся за балансировщиком нагрузки, который завершает SSL. Вот где это запутывает меня. Как мы можем и должны обрабатывать аутентификацию?

Предыдущий опыт WCF касается только услуг для внутреннего использования. Если я правильно понял, мы должны использовать basicHttpBinding, чтобы гарантировать совместимость с Java-клиентом. Я не знаю, если это проблема с клиентом JAX-WS.

Только этот клиент будет использовать эту услугу.

  • Мы должны каким-то образом обеспечить вызывающему проверку подлинности использовать систему
  • Убедитесь сообщение шифруется при движении в сети общего пользования

До сих пор лучшая статья, которую я нашел http://devproconnections.com/net-framework/wcf-and-ssl-processing-load-balancers

Было мало предложений, как это сделать.

Услуги WCF могут быть настроены для базовой аутентификации и получения учетных данных в режиме очистки через HTTP. Это может сработать; однако он не позволяет передавать учетные данные в сообщении и использовать более интересные учетные данные (например, выданные токены).

Мы используем проверку подлинности на нашем сайте, на которой будет размещаться служба. Я думаю, что не просто или даже возможно сделать услугу, а затем использовать базовую аутентификацию.

WCF сервисы могут быть настроены на поддельное наличие транспортной безопасности, с тем, что во время выполнения позволит получать учетные данные сообщения без транспорта или сообщения защиты

Будет ли это путь, и это будет работать с BasicHttpBinding?

ответ

2

Клиент и привязка сервера будут разными. Клиент привязка будет использовать имя пользователя авторизацию в eitehr сообщение или транспортном уровне с транспортной безопасностью (SSL):

<bindings> 
     <basicHttpBinding> 
      <binding name="NewBinding0"> 
       <security mode="Message" /> 
      </binding> 
     </basicHttpBinding> 
    </bindings> 

то конфигурационный сервер будет использовать ту же конфигурацию, но без транспортной безопасности. Если вы решили использовать защиту сообщений, проверьте WCF ClearUsernameBinding. Если вы используете безопасность trasnport (базовый http), тогда установите mode = "TransportCredentialOnly".

+0

спасибо. Я пытаюсь использовать метод ClearUserNameBinding, но я, очевидно, что-то пропускаю. Я получил его работу на месте. При запуске службы в нашей тестовой среде за балансировщиком нагрузки все запросы, похоже, переходят на страницу «Вы создали сервис» вместо вызова операций. Это происходит с моей собственной службой и с включенным обслуживанием тестов. Есть идеи? – user2745389

+0

Я думаю, что это что-то с конфигурацией LB. убедитесь, что он отправляет что-то на правильный URL-адрес сервера.также помните, что только серверу необходимо использовать CUB, клиент может использовать обычную привязку WCF. –

+0

Проблема заключалась в том, что клиент пытался использовать конечную точку http, вручную изменив ее на https и теперь она работает. Конечно, было бы неплохо, если бы я знал, как настроить это так, как мне не нужно вручную редактировать адрес конечной точки. – user2745389