Как ограничить службу WCF, вызываемую страницей ASP.NET AJAX, чтобы разрешать вызовы только для этой страницы? - PullRequest
0 голосов
/ 14 марта 2010

У меня есть элемент управления AjaxControlToolkit DynamicPopulate, который обновляется при вызовах службы WCF. Я знаю, что могу проверить HttpContext в запросе на обслуживание, чтобы увидеть, аутентифицирован ли пользователь страницы (и, следовательно, элемент управления). Однако я не хочу, чтобы кто-нибудь умный мог напрямую вызывать службу, даже если они вошли в систему. Я хочу, чтобы доступ к службе был разрешен ТОЛЬКО для запросов, сделанных со страницы. Главным образом, я не хочу, чтобы кто-либо мог программно совершать большое количество вызовов, а затем перепроектировать алгоритм, стоящий за службой.

Какие-нибудь умные идеи о том, как это можно сделать? Может быть, я слишком обдумываю это?

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 15 марта 2010

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

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

Так на самом деле: зачем вам так сильно ограничивать этот доступ?

0 голосов
/ 25 марта 2011

Я решил это другим подходом. Вместо того чтобы пытаться защитить службу на одной странице, я просто обезопасил службу, проверив HttpContext, чтобы убедиться, что пользователь, выполняющий запрос, аутентифицирован. Это зависит от совместимости ASP.NET для класса обслуживания WCF: http://msdn.microsoft.com/en-us/library/ms752234.aspx

Тогда у меня есть доступ к HttpContext внутри службы и я могу проверить, что звонок поступил от аутентифицированного пользователя. = D

0 голосов
/ 15 марта 2010

Простой ответ: ты не можешь. Сложный ответ: вы можете придумать много работы, например,

  1. Ограничение скорости на основе IP-адреса вызывающего абонента.
  2. Удалите куки в зависимости от сеанса и ограничения скорости.
  3. Бросьте куки на основе страницы, когда страница загружается, и ограничение по ней.

Однако ни один не является надежным, и все может пойти не так с законными запросами.

...