Оно работает. Нам также нужно добавить ссылку на системную сборку System.ServiceModel.Web.
сделал небольшой проект (WCF + REST), и у меня возникла небольшая проблема. Я хочу сделать мой класс авторизации и аутентификации.
Мой класс авторизации:
//validate api key
public class BasicAuthorization : ServiceAuthorizationManager
{
public override bool CheckAccess(OperationContext operationContext,
ref Message message)
{
//some code
}
}
Мой класс аутентификации
// validation user login & password
public class BasicAuthentication : ServiceAuthenticationManager
{
public override ReadOnlyCollection<IAuthorizationPolicy> Authenticate(
ReadOnlyCollection<IAuthorizationPolicy> authPolicy, Uri listenUri,
ref Message message)
{
//some code
}
}
У меня тоже какой-то конфигурационный файл
<behavior>
<serviceAuthorization
serviceAuthorizationManagerType="WCF.BasicAuthorization, WCF"/>
<serviceAuthenticationManager
serviceAuthenticationManagerType="WCF.BasicAuthentication, WCF"/>
</behavior>
Код в классе не важен - это не проблема.
Моя проблема заключается в том, как получить заголовки из OperationContext или класса сообщений. Как я уже говорил, я делаю это в покое, поэтому я хочу вручную установить заголовок Authorizaion / заголовок www-authenticate, но приложение этого не видит.
Я включаю Fiddler2 и пытаюсь поставить любой заголовок, например:
Content-Type: application/xml
Authorization: Basic bla23rwerfsd3==
User-Agent: Fiddler
Host: localhost:59305
И message.Headers / operationContext.Headers не имеет ни моего заголовка (имеет только другой), ни авторизации, ни Content-Type