Защита вызовов Api без потока учетных данных клиента OAuth2 в приложении SPA - PullRequest
1 голос
/ 09 июля 2020

У меня есть SPA-приложение, которое предоставляет статистику и информацию анонимным пользователям. Это приложение для спа-процедур, которое использует серверный веб-API REST (. net core). Эти данные не предназначены для c пользователей, поэтому информация находится в свободном доступе и аутентификация пользователя не требуется. Однако я не хочу, чтобы мой уровень Backend Api был доступен для inte rnet (т.е. не использовался анонимными приложениями, такими как почтальон, клиенты отдыха и т. Д. c). Я знаком с потоком учетных данных клиента (OAuth), но я не могу использовать его для этого приложения, потому что в этом приложении нет концепции входа пользователя в систему.

Каковы были бы мои лучшие варианты, ограничивающие доступ к мой уровень API для анонимных приложений (например, почтальон и т.д. c), или это вообще невозможно?

Ответы [ 2 ]

1 голос
/ 09 июля 2020

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

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

0 голосов
/ 25 августа 2020

Невозможно сделать API доступным для клиента publi c (вашего SPA), не сделав его доступным для пользователей, выполняющих вызовы API из Postman или специального кода. Возможно сделать обратное, только из-за ограничений, установленных браузерами.

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

...