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

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

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

  1. Чтобы сделать веб-службу полноценной RESTful, необходимо использовать webHttpBinding. Но...

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

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

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

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

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

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

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

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

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


person pyon    schedule 13.05.2011    source источник


Ответы (2)


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

person Eugene Yokota    schedule 13.05.2011
comment
Как мне написать модуль HTTP? Я очень новичок в веб-разработке. - person pyon; 14.05.2011
comment
@Eduardo León, когда я использую Google http-модуль, первая всплывающая страница - это пример кода. То, что вы новичок, нельзя использовать в качестве оправдания, если информация доступна легко. также вы переходили по ссылкам, которые я предоставил? - person Eugene Yokota; 14.05.2011

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

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

person Codo    schedule 13.05.2011
comment
Веб-сервер будет отвечать за шифрование ... Как? Я попытался использовать хост HTTPS с webHttpBinding, и у меня возникла ошибка. - person pyon; 14.05.2011
comment
Извините, я мог бы сделать это намного яснее: в этой настройке вы должны настроить его в IIS (с помощью диспетчера IIS / inetmgr.exe), а не в разделе WCF файла web.config (или любой другой конфигурации WCF, которую вы используете). - person Codo; 14.05.2011
comment
Есть ли способ заставить IIS использовать мой собственный UserNamePasswordValidator? - person pyon; 14.05.2011
comment
Предполагая, что ваш пользовательский UserNamePasswordValidator используется для аутентификации, я рекомендую вам посмотреть custombasicauth.codeplex.com о том, как реализовать настраиваемую проверку подлинности и заставить ее работать с WCF. Вы можете найти больше примеров в Интернете. - person Codo; 14.05.2011
comment
Скачал, а как установить? Никакой документации нет. - person pyon; 14.05.2011