-
-
Notifications
You must be signed in to change notification settings - Fork 9.5k
🌐 Add Russian translation for docs/ru/docs/tutorial/security/index.md
#9963
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
tiangolo
merged 8 commits into
fastapi:master
from
eVery1337:docs/ru/docs/tutorial/security/index.md
Aug 2, 2023
Merged
Changes from all commits
Commits
Show all changes
8 commits
Select commit
Hold shift + click to select a range
e6de103
Adding a russian translation docs/ru/docs/tutorial/security/index.md
eVery1337 76c18d1
🌐 Add Russian translation for 'docs/ru/docs/tutorial/security/index.md'
eVery1337 ba4fd49
Merge branch 'docs/ru/docs/tutorial/security/index.md' of https://git…
eVery1337 6baf1a7
Apply suggestions from code review
eVery1337 13ee9dc
changed header and translation of "flows"
eVery1337 e2116c0
Apply suggestions from code review
eVery1337 3ec5c09
little fix
eVery1337 8d23b40
one more little fix
eVery1337 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,101 @@ | ||
| # Настройка авторизации | ||
|
|
||
| Существует множество способов обеспечения безопасности, аутентификации и авторизации. | ||
|
|
||
| Обычно эта тема является достаточно сложной и трудной. | ||
|
|
||
| Во многих фреймворках и системах только работа с определением доступов к приложению и аутентификацией требует значительных затрат усилий и написания множества кода (во многих случаях его объём может составлять более 50% от всего написанного кода). | ||
|
|
||
| **FastAPI** предоставляет несколько инструментов, которые помогут вам настроить **Авторизацию** легко, быстро, стандартным способом, без необходимости изучать все её тонкости. | ||
|
|
||
| Но сначала давайте рассмотрим некоторые небольшие концепции. | ||
|
|
||
| ## Куда-то торопишься? | ||
|
|
||
| Если вам не нужна информация о каких-либо из следующих терминов и вам просто нужно добавить защиту с аутентификацией на основе логина и пароля *прямо сейчас*, переходите к следующим главам. | ||
|
|
||
| ## OAuth2 | ||
|
|
||
| OAuth2 - это протокол, который определяет несколько способов обработки аутентификации и авторизации. | ||
|
|
||
| Он довольно обширен и охватывает несколько сложных вариантов использования. | ||
|
|
||
| OAuth2 включает в себя способы аутентификации с использованием "третьей стороны". | ||
|
|
||
| Это то, что используют под собой все кнопки "вход с помощью Facebook, Google, Twitter, GitHub" на страницах авторизации. | ||
|
|
||
| ### OAuth 1 | ||
|
|
||
| Ранее использовался протокол OAuth 1, который сильно отличается от OAuth2 и является более сложным, поскольку он включал прямые описания того, как шифровать сообщение. | ||
|
|
||
| В настоящее время он не очень популярен и не используется. | ||
|
|
||
| OAuth2 не указывает, как шифровать сообщение, он ожидает, что ваше приложение будет обслуживаться по протоколу HTTPS. | ||
|
|
||
| !!! tip "Подсказка" | ||
| В разделе **Развертывание** вы увидите [как настроить протокол HTTPS бесплатно, используя Traefik и Let's Encrypt.](https://fastapi.tiangolo.com/ru/deployment/https/) | ||
|
|
||
|
|
||
| ## 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`: уникальный идентификатор для приложения, который может быть получен из: | ||
| * Параметров запроса. | ||
| * Заголовка. | ||
| * Cookies. | ||
| * `http`: стандартные системы аутентификации по протоколу HTTP, включая: | ||
| * `bearer`: заголовок `Authorization` со значением `Bearer {уникальный токен}`. Это унаследовано от OAuth2. | ||
| * Базовая аутентификация по протоколу HTTP. | ||
| * HTTP Digest и т.д. | ||
| * `oauth2`: все способы обеспечения безопасности OAuth2 называемые "потоки" (англ. "flows"). | ||
| * Некоторые из этих "потоков" подходят для реализации аутентификации через сторонний сервис использующий OAuth 2.0 (например, Google, Facebook, Twitter, GitHub и т.д.): | ||
| * `implicit` | ||
| * `clientCredentials` | ||
| * `authorizationCode` | ||
| * Но есть один конкретный "поток", который может быть идеально использован для обработки аутентификации непосредственно в том же приложении: | ||
| * `password`: в некоторых следующих главах будут рассмотрены примеры этого. | ||
| * `openIdConnect`: способ определить, как автоматически обнаруживать данные аутентификации OAuth2. | ||
| * Это автоматическое обнаружение определено в спецификации OpenID Connect. | ||
|
|
||
|
|
||
| !!! tip "Подсказка" | ||
| Интеграция сторонних сервисов для аутентификации/авторизации таких как Google, Facebook, Twitter, GitHub и т.д. осуществляется достаточно легко. | ||
|
|
||
| Самой сложной проблемой является создание такого провайдера аутентификации/авторизации, но **FastAPI** предоставляет вам инструменты, позволяющие легко это сделать, выполняя при этом всю тяжелую работу за вас. | ||
|
|
||
| ## Преимущества **FastAPI** | ||
|
|
||
| Fast API предоставляет несколько инструментов для каждой из этих схем безопасности в модуле `fastapi.security`, которые упрощают использование этих механизмов безопасности. | ||
|
|
||
| В следующих главах вы увидите, как обезопасить свой API, используя инструменты, предоставляемые **FastAPI**. | ||
|
|
||
| И вы также увидите, как он автоматически интегрируется в систему интерактивной документации. | ||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
В оригинале ссылки нет, но полезное внедрение.