У меня есть сервис, который я доступ из JQuery на странице, это выглядит следующим образом:Как ограничить доступ к службе WCF, реферированием?
[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);
}
}
Это здорово, но теперь любой желающий может открыть браузер и нажмите эту услугу. Я хочу, чтобы только локальный сайт мог получить доступ к этой службе. Есть ли какой-либо встроенный способ сделать это, или я должен придумать какую-нибудь умную схему, чтобы не выпускать рифф-рейфф?
Я действительно первый человек, с которым можно столкнуться? Я предположил, что, поскольку WCF настроен таким образом специально для вызовов AJAX, он предложит какой-то механизм, чтобы убедиться, что абоненты, не входящие в AJAX, не могут просто подключиться к службе и начать сосать данные. Однако внутри службы WCF у вас нет «контекста» от вызывающих, поэтому я предположил, что будет некоторая настройка WCF. Я не могу быть единственным человеком в мире, который сможет справиться с этим первым, верно ?! :-) –
Я обновил ответ - вы можете писать и использовать свое поведение, если вам нужно. – evgenyl
Спасибо, снова. Наверное, я не ищу «способ», я ищу наилучшую практику и как это уже решено. –