РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
229 of 307 menu

Класс OpenIdConnect

Класс OpenIdConnect наследуется от класса HTTPBearer и применяется к приложению FastAPI для извлечения токена из заголовка Authorization по схеме Bearer. Первым параметром передаётся URL-адрес openIdConnectUrl, который указывает на конфигурацию OpenID Connect. Вторым параметром передаётся scheme_name - имя схемы безопасности, отображаемое в документации. Третьим параметром передаётся description - текстовое описание схемы. Класс автоматически добавляет схему безопасности в OpenAPI-документацию приложения.

Синтаксис

from fastapi import FastAPI from fastapi.security import OpenIdConnect app = FastAPI() oidc = OpenIdConnect( openIdConnectUrl='https://example.com/.well-known/openid-configuration', scheme_name='OpenID Connect', description='OpenID Connect authentication', auto_error=True )

Пример

Давайте создадим зависимость с классом OpenIdConnect и защитим маршрут:

from fastapi import FastAPI, Depends from fastapi.security import OpenIdConnect app = FastAPI() oidc = OpenIdConnect( openIdConnectUrl='https://example.com/.well-known/openid-configuration' ) @app.get('/items/') def read_items(token: str = Depends(oidc)): return {'token': token}

При обращении к маршруту без заголовка Authorization FastAPI вернёт ошибку 403. Если передать заголовок Authorization: Bearer abcde, то зависимость вернёт значение токена.

Пример

Давайте отключим автоматическую ошибку через параметр auto_error и обработаем отсутствие токена вручную:

from fastapi import FastAPI, Depends, HTTPException from fastapi.security import OpenIdConnect app = FastAPI() oidc = OpenIdConnect( openIdConnectUrl='https://example.com/.well-known/openid-configuration', auto_error=False ) @app.get('/items/') def read_items(token: str = Depends(oidc)): if token is None: raise HTTPException(status_code=401, detail='Token is missing') return {'token': token}

Результат выполнения кода для запроса без токена:

{"detail": "Token is missing"}

Пример

Давайте укажем имя схемы и описание через параметры scheme_name и description:

<+python+> from fastapi import FastAPI, Depends from fastapi.security import OpenIdConnect app = FastAPI() oidc = OpenIdConnect( openIdConnectUrl='https://example.com/.well-known/openid-configuration', scheme_name='MyOpenID', description='Custom OpenID Connect scheme' ) @app.get('/items/') def read_items(token: str = Depends(oidc)): return {'token': token} <-python+>

В документации Swagger UI схема безопасности будет отображаться под именем 'MyOpenID' с указанным описанием.

Смотрите также

  • класс OAuth2,
    который реализует аутентификацию по протоколу OAuth2
  • класс OAuth2AuthorizationCodeBearer,
    который реализует поток authorization code в OAuth2
  • класс HTTPBearer,
    который извлекает токен из заголовка Authorization
  • функция Depends,
    которая внедряет зависимости в обработчики маршрутов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить