УСПОКОИТЕЛЬНЫЕ веб-сервисы

Я плохо знаком с УСПОКОИТЕЛЬНЫМИ веб-сервисами. Мы берем остальных маршрут для создания наших сервисов государственной сети, которые будут использованы клиентами. И у меня было несколько вопросов.

Действительно ли там кто-либо - вид ограничения с чистыми веб-сервисами REST? и если да затем был бы гибридный веб-сервис REST заботиться о тех ограничениях?

Я думаю об использовании SSL +, Код аутентификации сообщений хеша (HMAC) в заголовке Авторизации для безопасности наряду с IP основывал базирующуюся фильтрацию. что делает Вас, парни думают об этом?

Есть ли какие-либо хорошие клиентские инструменты для тестирования? В настоящее время я использую следующий http://code.google.com/p/rest-client/

И что относительно некоторого клиентского инструмента генерации кода?

Следующие ссылки являются моим источником информации.

http://msdn.microsoft.com/en-us/library/dd203052.aspx

http://blogs.msdn.com/b/endpoint/archive/2010/01/07/getting-started-with-wcf-webhttp-services-in-net-4.aspx

10
задан ps. 22 July 2010 в 17:21
поделиться

3 ответа

Это хорошая отправная точка для WCF REST WebService:

Конечные точки REST / SOAP для службы WCF

(BTW: Stackoverflow имеет хорошие URL-адреса типа REST.) Вы можете протестировать службу REST с помощью только веб-браузера (перейдите по URL-адресу и получите XML или JSON). Fiddler - тоже хороший инструмент, и FireBug-плагин для FireFox. Я обычно делаю тонкий проект сервисного интерфейса и отдельный (модульно протестированный) проект логики.

Для аутентификации я сначала сгенерирую Guid и отметку времени. Затем на основе этих хешей (.NET поддерживает SHA256 и SHA512). Guid может быть сохранен на сервере (таблица базы данных), чтобы сопоставить его с некоторым конкретным числовым идентификатором. Затем вы можете оставить URL-адрес, например:

/myobject/1?timestamp=20100802201000&hash=4DR7HGJPRE54Y 

, и просто отключить проверку хэша и отметки времени в среде разработки (например, с помощью AOP). С помощью отметки времени я бы проверил, что отметка находится между 15 минутами назад и вперед по времени (= должно быть достаточно для предотвращения атак).

Будет ли ваш сервис видимым для публики / в Интернете и будет ли ваш клиент jQuery или Silverlight-клиентом? Тогда у вас все еще есть проблема: вы не хотите включать секретный ключ в код клиентского программного обеспечения.

Итак, вам нужно сгенерировать хэш на сервере и какой-то cookie для хранения клиентского сеанса. (Это можно сделать, например, с помощью отдельной страницы входа / приложения в папке с другим файлом конфигурации.) Я помню, что в этой книге было кое-что по теме:

Если вы хотите включить HttpContext при использовании WCF, вам нужно установить в . Затем вы можете проверить идентичность текущего пользователя из HttpContext.Current.User.Identity.Name .

Однако, если вы хотите создать чистую службу REST, вы не используете файлы cookie, а используете базовую аутентификацию HTTP в сочетании с SSL / TLS для каждого вызова.

Я думаю, что легко создать клиент, используя только LINQ2Xml или jQuery, поэтому, возможно, создание клиента не требуется.

Или вы также можете иметь оба интерфейса, SOAP и REST, и использовать ссылку на службу для создания клиента.

5
ответ дан 4 December 2019 в 00:23
поделиться

Первое, что следует иметь в виду, - это то, что служба REST не должна иметь состояния, что сильно отличается от интерфейса службы типа SOAP / RPC. Использование методологии REST требует от вас переосмысления того, как вы хотите, чтобы ваши клиенты взаимодействовали со службой, разбив взаимодействия на четкие и краткие вызовы методов.

ОТДЫХ
+ Легкие сообщения, очень мало накладных расходов (кроме самого XML)
+ Легко читаемые результаты, можно легко протестировать с помощью веб-браузера
+ Простота реализации
- Более свободный интерфейс, свободная проверка типов

SOAP
+ Более жесткий, со строгим определением контракта
+ Доступно множество инструментов для разработки.

Изучив документацию WCF MSDN, можно сказать, что поддержка WCF SOAP была интегрирована с самого начала, а поддержка REST - недавно добавленная функция. Мне самому сложно найти документацию по аутентификации / безопасности для служб REST, поскольку большая часть документации направлена ​​на SOAP.

Инструменты генерации на стороне клиента: я не встречал ни одного для служб REST, поскольку REST не определяет контракт службы, как SOAP. WADL - это попытка сделать это для служб REST. http://en.wikipedia.org/wiki/Web_Application_Description_Language http://wadl.codeplex.com/

Мне интересно прочитать больше ответов, касающихся аутентификации и безопасности, поскольку я изучаю это сам.

7
ответ дан 4 December 2019 в 00:23
поделиться

Следует иметь в виду, что REST можно рассматривать как философию (все должно быть доступно по чистому URL-адресу, без прикрепленных скрытых строк) или как догму (вы должны использовать PUT и УДАЛИТЬ, даже если это означает много проблем в будущем).

Упор делается на упрощение - например, использование простых типов данных для параметров вместо структурированных наложений, или закрытие интерфейса по излишним причинам (например, буксирование гигантского «заголовка» страницы в URL-адресе), без использования заголовков, которые малоизвестны и деформируются. -факто стандарт.

Таким образом, вы можете идеально разработать интерфейс RESTful, используя только GET, и сохранить удобство использования и тестируемость в веб-браузерах. Вы также можете использовать любые стандартные методы аутентификации или несколько из них для избыточности в зависимости от вашей реальной целевой аудитории. Если вы создаете приложение для работы в корпоративной сети со стандартизованными учетными данными и токенами, вы можете продолжать его использовать. Если вы делаете что-то для очень общего доступа, вы можете использовать комбинацию аргументов GET и / или файлов cookie, чтобы ваши URL оставались чистыми для 99,99% пользователей.

Вы даже можете обслуживать как JSON, так и XML (например, карты Google) и по-прежнему использовать RESTful, но вы не можете использовать полномасштабный SOAP (сложные типы ввода и т. Д.). Вы можете использовать ограниченный SOAP - простые типы запросов, всегда выражаемые как аргументы GET, люди по-прежнему получают WSDL для документации.

Надеюсь, это рисует достаточно гибкую картину - образ мышления выше всяких строгих догм.

0
ответ дан 4 December 2019 в 00:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: