Как ограничить доступ к службе WCF по рефереру?
У меня есть сервис, к которому я обращаюсь из jQuery на странице, это выглядит так:
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class FacadeService
{
ServiceHelper serviceHelper = new ServiceHelper();
[OperationContract]
[WebGet(ResponseFormat=WebMessageFormat.Json)]
public String GetAllProducts()
{
Uri uri = new Uri("http://localhost:12345/api/Products");
return serviceHelper.SubmitGetRequestToService(uri);
}
}
Это здорово, но теперь любой может открыть браузер и запустить этот сервис. Я хочу, чтобы только местный веб-сайт имел доступ к этой услуге. Есть ли какой-нибудь встроенный способ сделать это, или я должен придумать какую-нибудь умную схему, чтобы не пустить в ход?
1 ответ
Если вы размещаете свой сервер в IIS, возможно, самый простой способ - ограничить доступ к URL службы с помощью инструментов IIS.
Если вы делаете это с помощью самой службы wcf, вы можете добавить свое поведение для ip-фильтрации, см., Например, этот и этот пост.
Но я все еще думаю, что будет легче сделать это с помощью стандартных инструментов IIS.