Концепции проектирования безопасности и аутентификации для совместимой (SOAP, REST) ​​службы WCF - PullRequest
2 голосов
/ 16 февраля 2012

Я хотел бы начать со сценария. Я создал службу WCF настолько, насколько это было возможно, что означает, что у меня есть три конечные точки, одна из которых использует wsHttpBinding (SOAP), которая позже будет использовать безопасность транспорта при настройке моего сертификата, и две webHttpBindings, одна для форматирования JSON, а другая XML-сообщения, где я бы тоже хотел добавить транспортную безопасность.

Теперь, когда эти конечные точки работают с моим простым примером метода, принимающего и возвращающего строку, я должен выяснить систему аутентификации, которую мне нужно выбрать!

Основным клиентским приложением будет приложение ASP.NET MVC, здесь я был бы очень рад использовать поставщика членства ASP.NET для аутентификации и авторизации внутри моего клиентского приложения и использовать эти учетные данные в запросах WCF. Я мог бы сделать это, но теперь в разработке принимают участие другие поставщики систем, которые могут быть (на данный момент, по крайней мере) и мобильные устройства Android и iOS. Хорошо, что у нас есть конечные точки REST для использования с любыми данными, которые они хотели бы использовать и корректно обрабатывать, что происходит с аутентификацией через конечные точки REST? Я никогда не смог бы использовать поставщика членства ASP.NET "из коробки" для моего WCF и обрабатывать запросы автоматически, могу я?

Мой первый вопрос: можно ли как-то совместить оба? Кто-нибудь с лучшими практиками, кто реализовал такой сценарий там? Должен ли я пойти с пользовательской системой аутентификации? Должен ли я использовать API членства изнутри и проверять подлинность при каждом обращении к базе данных? Есть так много других вопросов, которые я не получаю с REST ... учетные данные есть в каждом запросе заголовка сообщения?

Еще одна вещь, которая приходит мне в голову, - это создание двух разных сервисов (один для приложения MVC и два для REST XML, аутентификация JSON в базе данных при каждом запросе), но я полагаю, что это будет обслуживаемым кошмаром.

Вы получите идею, любые предложения и мысли приветствуются!

Спасибо.

1 Ответ

1 голос
/ 26 февраля 2013

Почему вы не можете попробовать ServiceStack .Выдвиньте всю свою логику на службу, и клиент станет одностраничным приложением, использующим вашу любимую библиотеку js, например angularjs Полный пример вы можете найти здесь http://razor.servicestack.net/.

Он также поддерживает аутентификацию "из коробки" для OAuth и аутентификации на основе форм.Есть еще несколько доступных, хотя.

Почему бы не WCF?Есть более чем одна причина.WCF хорош и делает много вещей, которые не нужны для большинства случаев использования.А Servicetack прост в использовании для сценариев этого типа, где логика находится на сервере.Он по умолчанию поддерживает REST, SOAP 1, SOAP 2, JSON, JSV, XML и т. Д. Он обеспечит вам быстрый старт.А также есть пример Servicestack с Monotouch, поэтому приложение работает на iOS.А также servicetack также предоставляет множество других вещей из коробки.Посетите сайт и дайте мне знать, если понадобятся какие-либо дополнительные детали.

...