2014-12-12 12 views
0

У меня проблемы с ограничением доступа к действию в контроллере (скажем, wwww.mysite.com/callback/c1). Я бы хотел, чтобы доступ к этому контроллеру мог получить только внешняя система ERP. ERP позволяет мне настроить URL-адрес обратного вызова, который будет обрабатывать запрос POST каждый раз, когда в этой системе ERP возникает определенное событие.Разрешить доступ к обратному URL-адресу только для внешней системы

Теперь я не хочу, чтобы кто-либо еще мог опубликовать что-либо по этому URL-адресу. Как я могу защитить этот URL для доступа только из системы ERP?

Я думал о жестком кодировании пользователя и пароля в URL-адресе ERP, поэтому он мог бы отправить запрос на www.mysite.com/callback/c1?userName=user & password = pass, таким образом я мог бы проверьте, являются ли учетные данные действительными и если этот запрос выполняется, но учетные данные будут видны в системе ERP.

Есть ли другой способ достичь этого?

PD: Я использую ASP.NET MVC5 PD2: у меня нет контроля над системой ERP для модификаций, я могу установить URL-адрес обратного вызова.

+0

Предполагая, что у вас есть диапазон IP ... создайте атрибут Authorize, который вы можете украсить своим действием. Это должно помочь вам: http://stackoverflow.com/questions/473687/restrict-access-to-a-specific-controller-by-ip-address-in-asp-net-mvc-beta. –

ответ

0

Вам нужно будет определить, что запрос поступает из ERP, поэтому вы должны выглядеть так, чтобы идентифицировать его в запросе. Вы должны читать, если есть: ClientCertificates, Headers, LogonUserIdentity, ServerVariables, Cookies, UserAgent, UserHostAddress, UserHostName ... Если вы найдете некоторые из этих элементов, которые идентифицируют ваш ERP, тогда проблема будет решена. Но кто-то все еще может украсть личность и воспроизвести ее.

Другой вариант - использовать межсетевой экран и/или специальную конфигурацию в IIS. Помимо обычного связывания с портом 80, вы можете привязать свое приложение к нестандартному порту, например 88, и, возможно, к доменному имени, которое только для вашей машины ERP. У вас есть доступ к файлу hosts на вашей ERP-системе ? См. this info in wikipedia.

Если вы настроили брандмауэр, вы можете установить фильтр так, чтобы запрос на новый связанный порт (в примере 88) мог поступать только с ERP-машины.

Вы также можете проверить, что запрос относится к домену, который только компьютер ERP определяет, как его решить, поскольку он определен в его файле hosts.

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

Wihtout больше информации трудно дать вам лучший совет (который является OS ПОР, какое приложение, какие конфигурации вы можете сделать ...)

Смежные вопросы