Пользовательская "Базовая" аутентификация для моих служб WCF. ОТДЫХ и РИА. Возможный?
Моя серверная часть содержит службы WCF4 REST, и я собираюсь добавить службы RIA для моего будущего приложения SL4. В настоящее время я делаю обычную аутентификацию следующим образом:
var auth = HttpContext.Current.Request.Headers.GetValues("Authorization");
И так далее.. Вы поняли идею.. Я звоню это при каждом запросе. Если заголовок отсутствует или я не могу подтвердить UN/Password - я делаю это:
outgoingResponse.Headers.Add("WWW-Authenticate: Basic realm=\"Secure Area\"");
До сих пор это меня успокоило, но я делаю рефакторинг своей серверной части. Внедрение IoC для связанных сервисов. Созданы пользовательские ServiceHost, ServiceHostFactory, InstanceProvider и все хорошо.
Теперь мне нужно понять, как правильно обрабатывать аутентификацию и авторизацию с помощью WCF, поэтому мне не нужно вручную проверять заголовки. У меня есть свой пользовательский MembershipProvider, поэтому должен быть какой-то метод, который обрабатывает UN/PW.
Есть указатели? Я посмотрел на http://www.codeproject.com/KB/WCF/BasicAuthWCFRest.aspx но он использует RequestInterceptor и недоступен в WCF4. Я нашел ServiceAuthenticationManager и ServiceAuthorizationManager, но нет примеров того, как их кодировать и связывать.
Кто-нибудь может подсказать, куда мне идти?
2 ответа
Попробуйте использовать этот пользовательский модуль HTTP. Он добавит новый режим аутентификации в IIS и позволит вам использовать проверку пользовательских учетных данных.
У меня были все типы проблем с использованием встроенных аннотаций для WCF в недавнем проекте SOAP/C#. Я знаю, что это не лучшее решение, но для своих целей я включил базовую аутентификацию в IIS7 для своего приложения, отключил анонимную аутентификацию и создал пользователей Active Directory для внешних клиентов, которые будут вызывать конечные точки веб-службы. Затем я изменил разрешения приложения в IIS7 (оно использует разрешения файловой системы), чтобы разрешить группу, содержащую этих пользователей.
Это перемещает проверку подлинности за пределы вашего приложения, что может не соответствовать вашим требованиям, но позволяет легко добавлять пользователей через консоль IIS7 и средства развертывания, которые могут копировать эти разрешения. Преимущество заключается в том, что вам не нужно повторно развертывать приложение для изменения разрешений. Недостатком является то, что вы не можете выполнять детальный контроль разрешений для каждой функции.