Как ограничить доступ к службе 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.

Другие вопросы по тегам