Использование WCF для создания веб-службы RESTful, которая требует аутентификации и использует JSON в качестве формата ввода / вывода

Я хочу портировать существующую веб-службу ASP.NET на WCF, чтобы результирующая веб-служба (1) была RESTful, (2) использовала JSON в качестве формата запроса / ответа, (3) имеет собственный механизм аутентификации.

После долгих поисков, случайного кодирования и желания ударить меня головой о стену, я обнаружил, что...

  1. webHttpBinding должен использоваться для создания веб-службы RESTful. Но...

    1. webHttpBinding не поддерживает HTTPS хосты

    2. webHttpBinding не поддерживает аутентификацию UserName.

    3. webHttpBinding даже не поддерживает безопасность сообщений.

  2. Поведение конечной точки с <enableWebScript/> должен использоваться для поддержки ASP.NET AJAX. Но...

    1. Что такое "ASP.NET" AJAX?

    2. Что если я захочу использовать Web-сервис, используя "обычный" AJAX?

И, самое главное...

  1. Может ли WCF делать то, что я хочу делать в первую очередь?

  2. Если нет, то какие еще платформы я могу использовать?

2 ответа

Решение

Я написал WCF-сервис, который выполняет SOAP и REST с XML и JSON, а также пользовательскую аутентификацию. Я вставил пользовательскую аутентификацию в модуль HTTP, который выполняет базовую аутентификацию через https. См. Пользовательскую базовую аутентификацию HTTP для веб-служб ASP.NET в.NET 3.5/VS 2008 и WCF POX, JSON и SOAP сосуществуют.

В описанной вами настройке веб-сервер (т.е. IIS) будет отвечать за шифрование (HTTPS) и аутентификацию (например, базовую аутентификацию). IIS можно расширить с помощью специального механизма аутентификации (просто Google для "обработчик модуля IIS").

Немного странно, что он должен быть делегирован IIS и не является частью WCF. Но это совсем не проблема.

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