Как защитить REST-ful API в Azure?
Я использую 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
, который является угловым приложением.
Тем не менее, я все еще могу использовать браузер (инкогнито или нет) или Почтальон для доступа к конечным точкам 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 и т. Д.), Но не уверен в разумном подходе.