2012-01-23 6 views
2

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

Так что у меня 2 вопроса:

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

Любые ответы были бы оценены. Заранее благодарю!

ответ

1

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

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

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

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

Смежные вопросы