Я плохо знаком с УСПОКОИТЕЛЬНЫМИ веб-сервисами. Мы берем остальных маршрут для создания наших сервисов государственной сети, которые будут использованы клиентами. И у меня было несколько вопросов.
Действительно ли там кто-либо - вид ограничения с чистыми веб-сервисами REST? и если да затем был бы гибридный веб-сервис REST заботиться о тех ограничениях?
Я думаю об использовании SSL +, Код аутентификации сообщений хеша (HMAC) в заголовке Авторизации для безопасности наряду с IP основывал базирующуюся фильтрацию. что делает Вас, парни думают об этом?
Есть ли какие-либо хорошие клиентские инструменты для тестирования? В настоящее время я использую следующий http://code.google.com/p/rest-client/
И что относительно некоторого клиентского инструмента генерации кода?
Следующие ссылки являются моим источником информации.
Это хорошая отправная точка для 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, и использовать ссылку на службу для создания клиента.
Первое, что следует иметь в виду, - это то, что служба 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/
Мне интересно прочитать больше ответов, касающихся аутентификации и безопасности, поскольку я изучаю это сам.
Следует иметь в виду, что REST можно рассматривать как философию (все должно быть доступно по чистому URL-адресу, без прикрепленных скрытых строк) или как догму (вы должны использовать PUT и УДАЛИТЬ, даже если это означает много проблем в будущем).
Упор делается на упрощение - например, использование простых типов данных для параметров вместо структурированных наложений, или закрытие интерфейса по излишним причинам (например, буксирование гигантского «заголовка» страницы в URL-адресе), без использования заголовков, которые малоизвестны и деформируются. -факто стандарт.
Таким образом, вы можете идеально разработать интерфейс RESTful, используя только GET, и сохранить удобство использования и тестируемость в веб-браузерах. Вы также можете использовать любые стандартные методы аутентификации или несколько из них для избыточности в зависимости от вашей реальной целевой аудитории. Если вы создаете приложение для работы в корпоративной сети со стандартизованными учетными данными и токенами, вы можете продолжать его использовать. Если вы делаете что-то для очень общего доступа, вы можете использовать комбинацию аргументов GET и / или файлов cookie, чтобы ваши URL оставались чистыми для 99,99% пользователей.
Вы даже можете обслуживать как JSON, так и XML (например, карты Google) и по-прежнему использовать RESTful, но вы не можете использовать полномасштабный SOAP (сложные типы ввода и т. Д.). Вы можете использовать ограниченный SOAP - простые типы запросов, всегда выражаемые как аргументы GET, люди по-прежнему получают WSDL для документации.
Надеюсь, это рисует достаточно гибкую картину - образ мышления выше всяких строгих догм.