Безопасность
Существует множество способов обработки безопасности, аутентификации и авторизации.
И обычно это сложная и «трудная» тема.
Во многих фреймворках и системах обработка безопасности и аутентификации требует больших усилий и кода (во многих случаях это может составлять 50% или более от всего написанного кода).
FastAPI предоставляет несколько инструментов, которые помогут вам легко, быстро и стандартным способом справиться с Безопасностью, без необходимости изучения и освоения всех спецификаций безопасности.
Но сначала давайте рассмотрим некоторые основные понятия.
В спешке?
Если вас не интересуют эти термины, и вам нужно добавить безопасность с аутентификацией на основе имени пользователя и пароля прямо сейчас, перейдите к следующим разделам.
OAuth2
OAuth2 — это спецификация, которая определяет несколько способов обработки аутентификации и авторизации.
Это довольно обширная спецификация и охватывает несколько сложных случаев использования.
Она включает способы аутентификации с помощью «третьей стороны».
Вот что используют все системы с «входом через Facebook, Google, Twitter, GitHub» в основе.
OAuth 1
Существовал OAuth 1, который сильно отличается от OAuth2 и сложнее, поскольку включал прямые спецификации по шифрованию связи.
Он не очень популярен и не используется в наши дни.
OAuth2 не определяет, как шифровать связь, он предполагает, что ваша приложение работает с HTTPS.
Подсказка
В разделе об развертывании вы увидите, как бесплатно настроить HTTPS, используя Traefik и Let's Encrypt.
OpenID Connect
OpenID Connect — это ещё одна спецификация, основанная на OAuth2.
Она просто расширяет OAuth2, уточняя некоторые относительно неоднозначные моменты в OAuth2, чтобы сделать его более совместимым.
Например, вход через Google использует OpenID Connect (который в основе использует OAuth2).
Но вход через Facebook не поддерживает OpenID Connect. У него есть собственный вариант OAuth2.
OpenID (не «OpenID Connect»)
Также существовала спецификация «OpenID». Она пыталась решить ту же задачу, что и OpenID Connect, но не основывалась на OAuth2.
Поэтому это была полностью отдельная система.
Она не очень популярна и не используется в наши дни.
OpenAPI
OpenAPI (ранее известный как Swagger) — это открытая спецификация для создания API (сейчас входит в состав Linux Foundation).
FastAPI основано на OpenAPI.
Это позволяет иметь несколько автоматических интерактивных интерфейсов документации, генерацию кода и т. д.
OpenAPI имеет способ определения нескольких «схем» безопасности.
Используя их, вы можете воспользоваться всеми этими инструментами, основанными на стандартах, включая эти интерактивные системы документации.
OpenAPI определяет следующие схемы безопасности:
-
apiKey: специфичный для приложения ключ, который может поступать из:- Параметра запроса.
- Заголовка.
- Куки.
-
http: стандартные системы HTTP-аутентификации, включая:-
bearer: заголовокAuthorizationсо значениемBearerплюс токен. Это унаследовано от OAuth2. - HTTP-аутентификация Basic.
- HTTP Digest и т. д.
-
-
oauth2: все способы OAuth2 для обработки безопасности (называемые «потоками»).- Некоторые из этих потоков подходят для создания поставщика аутентификации OAuth 2.0 (например, Google, Facebook, Twitter, GitHub и т. д.):
implicitclientCredentialsauthorizationCode
- Но есть один специфичный «поток», который можно идеально использовать для обработки аутентификации в рамках одного приложения напрямую:
-
password: в следующих главах будут рассмотрены примеры этого.
-
- Некоторые из этих потоков подходят для создания поставщика аутентификации OAuth 2.0 (например, Google, Facebook, Twitter, GitHub и т. д.):
-
openIdConnect: имеет способ автоматически обнаруживать данные аутентификации OAuth2.- Эта автоматическая обнаружение определена в спецификации OpenID Connect.
Подсказка
Интеграция других поставщиков аутентификации/авторизации, таких как Google, Facebook, Twitter, GitHub и т. д., также возможна и относительно проста.
Самая сложная проблема — это создание поставщика аутентификации/авторизации, подобного этим, но FastAPI предоставляет инструменты для этого легко, беря на себя тяжелую работу.
FastAPI инструменты
FastAPI предоставляет несколько инструментов для каждой из этих схем безопасности в fastapi.security модуле, которые упрощают использование этих механизмов безопасности.
В следующих главах вы увидите, как добавить безопасность в свой API с помощью этих инструментов, предоставленных FastAPI.
Вы также увидите, как это автоматически интегрируется в интерактивную систему документации.
© 2018 Sebastián Ramírez
Licensed under the MIT License.
https://fastapi.tiangolo.com/tutorial/security/