Защита MVC Rest + Soap Service с помощью единой ключевой стратегии - PullRequest
0 голосов
/ 04 августа 2010

У меня есть настройка сайта asp.net MVC 2 для предоставления API ответов json / xml

например

[GET] / Продукт / 10

Возвращает xml-ответ продукта

Кроме того, у меня есть встроенная в сайт служба SOAP WCF, которая возвращает те же методы (тот же контракт), но через SOAP

например

GetProduct (10)

Возвращает XML-мыло.

Я выбрал этот маршрут, потому что мне нравится чистый подход MVC + механизм маршрутизации. Мой клиент хотел бы защитить каждый запрос, используя систему аутентификации на основе ключа / токена.

Они просто хотят включить ключ в каждый запрос ...

У меня вопрос: каков лучший (и самый доступный подход) к этому? Я думал об использовании настраиваемого заголовка HTTP, однако ... могут ли некоторые клиенты иметь проблемы с установкой этого значения? Легко ли это сделать с помощью Soap-клиента, сгенерированного из WSDL?

Я бы не стал загрязнять свои бизнес-объекты ключевыми свойствами.

1 Ответ

0 голосов
/ 04 августа 2010

Ответ зависит от того, каких клиентов вы хотите поддержать.У вас есть много вариантов:

  • Использовать wsHttpBinding для современных клиентов, которые поддерживают WS-Security
  • Использовать basicHttpBinding для клиентов, которые этого не делают - вы можете запустить это через SSL, если хотите,и можете использовать выбранные вами методы аутентификации HTTP
  • Используйте basicHttpBinding со своими пользовательскими заголовками, если хотите.Имейте в виду, что некоторые клиенты не поддерживают заголовки или должны приложить дополнительные усилия для их использования.Лично я не против заставить таких клиентов извиваться, но вы можете.

Независимо от того, что вы выберете, WCF позволит вам внедрить их всех одновременно.Вы можете иметь один сервис для обслуживания одного и того же контракта на нескольких конечных точках.Например, вы можете оставить basicHttpBinding на https://services.company.com/myservice/basic и одновременно поддерживать WS-Security на http://services.company.com/myservice/secure.

...