Класс OAuth2AuthorizationCodeBearer
Класс OAuth2AuthorizationCodeBearer применяется
для защиты маршрутов с помощью OAuth2-потока
Authorization Code. Он извлекает access-токен
из заголовка Authorization (схема Bearer)
и передаёт его в функцию-обработчик как строку.
Первым параметром передаётся authorizationUrl -
URL страницы авторизации, вторым - tokenUrl -
URL для обмена кода на токен. Необязательный
параметр refreshUrl задаёт URL обновления токена,
scopes - словарь доступных областей,
scheme_name - имя схемы в документации,
auto_error - флаг автоматической ошибки 401.
Синтаксис
from fastapi.security import OAuth2AuthorizationCodeBearer
oauth2_scheme = OAuth2AuthorizationCodeBearer(
authorizationUrl='abcde',
tokenUrl='abcde',
refreshUrl=None,
scopes=None,
scheme_name=None,
auto_error=True,
)
Пример
Давайте создадим зависимость безопасности и защитим с её помощью маршрут:
from fastapi import FastAPI, Depends
from fastapi.security import OAuth2AuthorizationCodeBearer
app = FastAPI()
oauth2_scheme = OAuth2AuthorizationCodeBearer(
authorizationUrl='https://example.com/oauth/authorize',
tokenUrl='https://example.com/oauth/token',
)
@app.get('/user')
def user(token: str = Depends(oauth2_scheme)):
return {'token': token}
Результат выполнения кода для заголовка
Authorization: Bearer abcde:
{"token": "abcde"}
Пример
Давайте добавим области доступа scopes
и защитим маршрут через Security:
from fastapi import FastAPI, Security
from fastapi.security import OAuth2AuthorizationCodeBearer
app = FastAPI()
oauth2_scheme = OAuth2AuthorizationCodeBearer(
authorizationUrl='https://example.com/oauth/authorize',
tokenUrl='https://example.com/oauth/token',
scopes={'read': 'read access', 'write': 'write access'},
)
@app.get('/article')
def article(token: str = Security(oauth2_scheme, scopes=['read'])):
return {'token': token}
Результат выполнения кода для заголовка
Authorization: Bearer abcde:
{"token": "abcde"}
Пример
Давайте отключим автоматическую ошибку
через параметр auto_error и обработаем
отсутствие токена вручную:
Результат выполнения кода без заголовка Authorization:
{"token": "guest"}
Смотрите также
-
класс
OAuth2PasswordBearer,
который реализует схему OAuth2 Password Bearer -
функция
Security,
которая добавляет области доступа к зависимости -
функция
Depends,
которая внедряет зависимость безопасности в маршрут -
класс
OAuth2,
который описывает базовую схему OAuth2