Как ограничить доступ API к известным клиентским приложениям в приложении Web API 2?

1

Я создал приложение, состоящее из трех основных компонентов:

  1. Проект.NET Web Api 2, который предоставляет несколько WebApiControllers. Некоторые методы, такие как "Регистрация", открыты для анонимного доступа, а другие авторизованы с использованием базовой авторизации на основе токенов (стандартный подход.Net Identity 2, включенный в шаблоны.Net WebApi2). В интересах быстрой и грязной функциональности этот уровень напрямую связывается с моей базой данных с использованием Entity Framework.
  2. Проект MVC5, который предоставляет интерфейсный веб-клиент и взаимодействует с веб-API.
  3. Клиент iOS, который взаимодействует с веб-API.

С этой структурой конечные пользователи ("потребители") могут создавать свои собственные учетные записи, используя метод аутентификации "Register", не прошедший проверку подлинности. Затем пользователи могут получать и обрабатывать свои собственные данные через аутентифицированные методы, защищенные заголовками авторизации на токенах.

Вот мой вопрос:

Как запретить неизвестным клиентам совершать вызовы в API, не создавая значительных накладных расходов или пересматривая стандартную функциональность авторизации веб-API?

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

  • 0
    Ограничение доступа обычно выполняется в фильтре авторизации, который бы украшал ваш контроллер. В реализации фильтра вы можете проверить токен в ваших заголовках и, возможно, отклонить запрос, используя: actionContext.Response = actionContext.Request.CreateResponse (HttpStatusCode.Unauthorized);
  • 0
    Я уже использую фильтр авторизации для обычной аутентификации на уровне пользователя для определенных методов API, но это не дает мне уровня защиты для блокировки неавторизованных клиентов. По сути, сейчас любой пользователь может напрямую вызвать API для создания учетной записи и манипулирования своими собственными данными. Меня особенно беспокоят люди, вызывающие метод Register (который должен разрешать анонимные пользователи, чтобы отдельные лица могли создавать учетные записи) и рассылающие спам этот метод для создания большого количества поддельных учетных записей (я могу отличить их, потому что я использую подтверждение по электронной почте, но я не хочу DDoS-атак).
Показать ещё 2 комментария
Теги:
asp.net-web-api2
restful-authentication

1 ответ

0

Взгляните на параметр knownClientApplications в манифесте Active Directory. https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-application-manifest

Ещё вопросы

Сообщество Overcoder
Наверх
Меню