Безопасность веб-службы ASP.NET

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

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

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


person Josh    schedule 28.07.2009    source источник


Ответы (3)


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

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

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

person Jaime    schedule 28.07.2009
comment
Если клиент-потребитель использует библиотеку, такую ​​как PHP SOAP, сможет ли он легко писать в заголовок через библиотеку? - person Josh; 29.07.2009
comment
Я не делал этого на PHP, но думаю, что пока библиотека поддерживает пользовательские заголовки, проблем быть не должно. - person Jaime; 29.07.2009
comment
Я сделал это в .NET 4.0, и было 2 синтаксических ошибки 1) Между newlocalhost должен быть пробел: localhost.AuthSoapHd objAuthSoapHeader = newlocalhost.AuthSoapHd(); 2) для вызова веб-метода необходимо передать spAuthenticationHeader в качестве параметра - person Ronald; 08.07.2016

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

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

person ntze    schedule 15.10.2009

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

        //Check for Secure Channel: HTTPS
        if (!Context.Request.IsSecureConnection) 
            return "The HTTP Connection must use Secure Sockets (HTTPS)";
person jinsungy    schedule 15.10.2009