Это хорошая отправная точка веб-службы REST WCF:
Конечные точки REST / SOAP для службы WCF
(Кстати, Stackoverflow имеет хороший тип REST:urls.) Вы можете протестировать службу REST только с помощью веб-браузера (перейдите по ссылке и получите XML или JSON).Fiddler также хороший инструмент и FireBug-плагин для FireFox.Я обычно делаю тонкий интерфейс с сервисным интерфейсом и отдельный (проверенный модулем) логический проект.
Для аутентификации я сначала сгенерирую Guid и временную метку.Затем на основе этих хэшей (.NET поддерживает SHA256 и SHA512).Guid может быть сохранен на сервере (таблица базы данных), чтобы отобразить в нем какой-то конкретный числовой идентификатор.Затем вы можете создать URL для отдыха, например:
/myobject/1?timestamp=20100802201000&hash=4DR7HGJPRE54Y
и просто отключить проверку хешей и временных меток в среде разработки (например, с помощью AOP).С отметкой времени я бы проверил, что штамп находится между 15 минутами назад и вперед (= должно быть достаточно, чтобы предотвратить атаки).
Будет ли ваш сервис видимым для широкой публики / интернета и является ли ваш клиент клиентом jQuery или Silverlight?Тогда у вас все еще есть проблема: вы не хотите включать секретный ключ в код программного обеспечения клиента.
Таким образом, вам нужно сгенерировать хеш на сервере и какой-нибудь cookie для хранения сеанса клиента.(Это можно сделать, например, с помощью отдельной страницы входа / приложения в папке с другим файлом конфигурации.) Я помню, что эта книга действительно имела что-то по теме:
Если выЕсли вы хотите включить HttpContext при использовании WCF, вам нужно установить <serviceHostingEnvironment aspNetCompatibilityEnabled="true">
в <system.serviceModel>
.Затем вы можете проверить текущую идентификационную информацию пользователя с HttpContext.Current.User.Identity.Name
.
. Однако, если вы хотите сделать чистую службу REST, вы не используете куки, но базовую аутентификацию HTTP в сочетании с SSL / TLS для каждого вызова.
Я думаю, что легко сделать клиента с помощью только LINQ2Xml или jQuery, поэтому, возможно, генерация клиента не нужна.
Или вы можете также иметь и интерфейс SOAP и REST, ииспользуйте сервисную ссылку, чтобы сделать клиента.