Как защитить REST-ful API в Azure? - PullRequest
0 голосов
/ 07 июня 2019

Я использую REST-ful API (приложение) в Azure, используя App Services. В частности, я использую Flask для написания API. Я могу «защитить» от CSRF с помощью CORS следующим образом.

app = Flask(__name__)
CORS(app, resources={r'/api/v1/*': {'origins': 'https://my-angular-app.azurewebsites.net'}})

Обратите внимание, что мое намерение разрешить только XHR из домена https://my-angular-app.azurewebsites.net, который является угловым приложением.

Однако я все еще могу использовать браузер (инкогнито или нет) или Postman для доступа к конечным точкам REST (например, https://my-rest-app.azurewebsites.net/api/v1/test). Инструмент Почтальон не является браузером, и поэтому он должен вести себя так, как он наблюдал. Поскольку браузер - это не один домен, использующий XHR для доступа к API-интерфейсу REST, напрямую набрав в известной конечной точке, я все равно могу получить доступ к ресурсу.

Я попытался применить Аутентификацию / Авторизацию к приложению REST, используя Login with Azure Active Directory. Этот подход «защищает» посторонних от прямого доступа к конечным точкам REST, однако он также не дает приложению Angular создавать XHR (я получаю 401 Unauthorized).

Есть идеи, как защитить REST-приложение от "посторонних"? Я могу представить «исправления» в нескольких местах (например, в Angular, Flask, Azure и т. Д.), Но не уверен в разумном подходе.

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