ASP.NET Web Api - авторизация на основе значений строки запроса и защита API - PullRequest
6 голосов
/ 29 февраля 2012

При разработке и изучении веб-API ASP.NET я столкнулся с несколькими проблемами, на которые мне нужна помощь и обсуждение.

Вдохновленный этим превосходным постом о разработке Secure REST API без OAuth. Мне интересно, как лучше подходить к проверке различных токенов и информации, которую я собираюсь попросить.

Краткое резюме: я буду запрашивать (в строке запроса) следующую информацию.

  • идентификатор пользователя
  • ключ API
  • Отметка времени
  • хэш подписи, основанный на секретном ключе, который был выдан пользователю и хеширован вместе со значениями запроса

Мой вопрос / вопрос такой:

Если это разумный подход, как лучше всего реализовать это с помощью ASP.NET Web API?

В настоящее время я думаю об использовании пользовательского атрибута, которым я могу пометить свои методы, типа атрибута Authorize, который извлекает необходимое из строки запроса, или некоторого объекта типа POCO, который содержит все значения, и я могу использовать его для храните весь код типа авторизации в одном месте.

У кого-нибудь есть опыт или мысли по этому поводу?

Спасибо:)

1 Ответ

5 голосов
/ 29 февраля 2012

В настоящее время, как вы могли видеть, подход AuthorizeAttribute используется в веб-API.Я думаю, что это довольно хороший подход, поскольку мы можем поместить этот атрибут в отдельные элементы, требующие авторизации.

Я сделал авторизацию, расширив System.Web.Http.Filters.AuthorizationFilterAttribute.После того, как вы продлите его, все детали авторизации остаются на ваше усмотрение, и у вас есть множество подходов на выбор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...