Как я могу программно ограничить доступ к веб-сервису? - PullRequest
2 голосов
/ 23 марта 2009

Я пишу традиционный веб-сервис ASMX, использующий C # с .Net 2.0 для развертывания на IIS. Веб-сервис будет развернут в среде общего хостинга, где каждый клиент имеет свою собственную копию приложения, расположенную в отдельном виртуальном каталоге (я знаю, я знаю - это устаревшее приложение). В каждом виртуальном каталоге будет отдельная копия веб-службы.

Поскольку веб-служба потенциально может выполнять некоторые мощные функции, я хотел бы дополнительно ограничить доступ к ней определенными IP-адресами. Делать это в брандмауэре не очень хороший вариант, так как ограничивается только веб-сервис, а не остальная часть веб-сайта - и он находится на уровне каждого виртуального каталога.

Могу ли я программно прочитать IP-адрес запрашивающей стороны и сравнить его со списком, чтобы я мог отклонить вызовы из других адресов? Есть ли какие-либо серьезные подводные камни в этом?

Спасибо

1 Ответ

4 голосов
/ 23 марта 2009

Да, вы можете сделать это легко.

[WebMethod]
public bool IsAlive()
{
     string callingAddress = HttpContext.Current.Request.UserHostAddress;
     return (callingAddress == allowedAddress);
}

Единственными подводными камнями являются ведение списка IP-адресов.

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

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