2009-07-28 3 views
2

В прошлом я создал веб-службы ASP.NET, которые либо были публично использованы, либо использовались для проверки подлинности Windows. Теперь мне нужно создать веб-службу, которая использует протокол SOAP 1.1, и ее необходимо защитить с помощью имени пользователя и пароля от вызывающего.Безопасность веб-службы ASP.NET

Похоже, setting up the infrastructure для WCP является излишним для одного или двух веб-сервисов. Любые другие предложения? Я также думал об использовании бета-версии ASP.NET 4.0, если кто-то изучил это для этого сценария, было бы полезно узнать ваше мнение.

Заранее благодарим за ваши предложения.

ответ

6

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

Вот некоторые примеры кода: http://aspalliance.com/805_Soap_Headers_Authentication_in_Web_Services

Обратите внимание, что в этом случае вы отправляют текстовое имя пользователя и пароль, поэтому вы хотели бы использовать ssl или использовать какую-либо аутентификацию дайджеста.

+0

Если потребитель-потребитель использует библиотеку, такую ​​как PHP SOAP, смогут ли они легко записывать в заголовок через библиотеку? – Josh

+0

Я не делал этого в PHP, но я думаю, что до тех пор, пока библиотека поддерживает пользовательские заголовки, не должно быть проблем – Jaime

+0

Я сделал это в .NET 4.0 и было 2 синтаксических ошибки 1) Должно быть место между newlocalhost: localhost.AuthSoapHd objAuthSoapHeader = newlocalhost.AuthSoapHd(); 2) для вызова метода web необходимо, чтобы spAuthenticationHeader передавался как параметр – Ronald

0

Существуют разные способы сделать это. Можно было бы разрешить доступ к определенным наборам IP-адресов. Если IP не соответствует одному из списков, вы можете легко отклонить вызов на уровне метода.

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

0

SSL. Заставляйте всех, кто потребляет ваш веб-сервис, использовать https.

 //Check for Secure Channel: HTTPS 
     if (!Context.Request.IsSecureConnection) 
      return "The HTTP Connection must use Secure Sockets (HTTPS)"; 
Смежные вопросы