ssl канал wcf web api? - PullRequest
       29

ssl канал wcf web api?

2 голосов
/ 23 января 2012

В настоящее время я разрабатываю веб-API с веб-API WCF, который позволяет мне писать успокаивающие API-интерфейсы.У меня есть проблема с безопасностью.По этой причине я решил защитить свой API с помощью протокола OAuth, который работает очень хорошо.Однако команда пришла к выводу, что наши собственные приложения не должны быть авторизованы oauth, вместо этого они должны быть авторизованы через http basic, то есть клиентское приложение должно отправить имя пользователя и пароль.

Итак, у меня есть 2вопросы:

  1. Как мне настроить WCF Web Api для работы с SSL, я использую Web Api preview 6, и проект является приложением MVC3?
  2. У меня естьобработчик операций, который заботится о создании IPrincipal из токена доступа клиента, а затем внедряет его в параметры операции, чтобы я мог получить доступ к информации пользователя.Я хотел бы иметь в том же обработчике условия, при которых я мог бы проверить, является ли схема авторизации OAuth или http basic, а затем, в случае http basic, извлечь учетные данные пользователя и аутентифицировать этого конкретного пользователя по моей базе данных, если аутентификацияУспешно создайте IPrincipal и вставьте его в параметры операции.Тем не менее, как я вижу, каждый раз, когда приложение, использующее http basic, запрашивает что-то к API, мне приходится обращаться к базе данных и проходить аутентификацию.Итак, мой вопрос: я на правильном пути, или это может быть достигнуто каким-либо другим способом?

Любые ответы будут признательны.Спасибо заранее!

1 Ответ

1 голос
/ 26 января 2012

Вы настраиваете SSL для веб-API WCF так же, как и любой другой сервис WCF, предоставляемый через HTTPS.Если вы размещены в IIS, вам необходимо настроить привязку сайта для HTTPS.Если вы размещены самостоятельно, то конфигурация немного сложнее.Все подробности см. В http://msdn.microsoft.com/en-us/library/ms733768.aspx.

Для обработки базовой аутентификации с помощью настраиваемого поставщика удостоверений вы, как правило, используете настраиваемый модуль аутентификации при размещении в IIS.Смотрите [http://custombasicauth.codeplex.com/] для примера того, как это сделать.Если вы самостоятельно размещены, то можете использовать пользовательский валидатор passworld.См. http://msdn.microsoft.com/en-us/library/aa702565.aspx для получения подробной информации.

Да, я считаю, что вы правы, что каждый запрос требует аутентификации, если вы не установите какую-то сессионную семантику.

Надеюсь, это поможет.

...