Службы данных WPF и WCF проходят проверку подлинности на уровне запросов? - PullRequest
3 голосов
/ 07 августа 2010

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

Какие-нибудь URL, которые могут помочь мне расшифровать эту проблему?

Ответы [ 2 ]

1 голос
/ 16 сентября 2011

Я использую ключ API, чтобы «защитить» свои службы по HTTPS и разрешить доступ только к определенным IP-адресам с IIS.Просто переопределите OnStartProcessingRequest() примерно так:

    protected override void OnStartProcessingRequest(ProcessRequestArgs Args)
    {
        // allow the metadata to be retrieved without specifying an API key by appending $metadata on the end
        if (Args.RequestUri.Segments.Last().Replace("/", String.Empty) != "$metadata")
        {
            // check if a valid API key has been passed in (see Configuration.xml)
            if (!IsValidAPIKey(Args.OperationContext.RequestHeaders["APIKey"])) throw new DataServiceException("Invalid API key");
        }

        base.OnStartProcessingRequest(Args);
    }

    private bool IsValidAPIKey(string PassedAPIKey)
    {
        if (!String.IsNullOrEmpty(PassedAPIKey))
        {
            Guid APIKey;

            // Configuration.APIKeys is just a simple list that reads from an XML file
            if (Guid.TryParse(PassedAPIKey, out APIKey) && Configuration.APIKeys.Exists(x => x.Key == APIKey)) return true;
        }

        return false;
    }

Мой XML-файл:

<?xml version="1.0" encoding="utf-8" ?>
<ArrayOfAPIKey xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <APIKey Key="ee5346fa-bca5-4236-ae6c-f35ae2f69e0b" ApplicationName="blah" />
</ArrayOfAPIKey>

Моя клиентская сторона:

base.SendingRequest += (s, e) => { e.Request.Headers.Add("APIkey", "your-api-key-here");  };
0 голосов
/ 07 августа 2010

Службы данных WCF используют обычные компоненты authN / authZ стека vanilla WCF. Как вы размещаете свой сервис (обычно в IIS) и какую схему аутентификации вы используете?

Обновление: команда Astoria / WCF Data Services опубликовала отличную серию публикаций в блоге об WCF Data Services и аутентификации: http://blogs.msdn.com/b/astoriateam/archive/tags/authentication/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...