Skip to main content

auth-lib

Библиотека функций авторизации для микросервисов Твой ФФ!

pypi tg

Функционал

Хранение общих методов аутентификации и авторизации для бэкендов Твой ФФ

Примеры использования

FastAPI

from auth_lib.fastapi import UnionAuth
from fastapi import APIRouter, Depends
router = APIRouter(prefix="/...")

## Чтобы дернуть ручку нужен один скоуп, авторизация обязательна
## Юзкейс https://github.com/profcomff/timetable-api/blob/a374c74cd960941100f6c923ff9c3ff706a1ed09/calendar_backend/routes/room/room.py#L45
@router.smth("/")
async def foo(_=Depends(UnionAuth(scopes=["service.resource.method"], allow_none=False, auto_error=True))):
  pass

## Чтобы дернуть ручку нужно два скоупа, авторизация обязательна
## Юзкейс https://github.com/profcomff/print-api/blob/775f36fdd185eec8d9096d3472b7730cf5ac9798/print_service/routes/user.py#L78
@router.smth("/")
async def bar(_=Depends(UnionAuth(scopes=["scope1", "scope2"], allow_none=False, auto_error=True))):
  pass

## Чтобы дернуть ручку не нужны скоупы, авторизация необязательна, но если передана недействительная сессия, то кинет ошибку
@router.smth("/")
async def baz(_=Depends(UnionAuth(scopes=[], allow_none=True, auto_error=True))):
  pass


## Чтобы дернуть ручку не нужны скоупы, авторизация обязательна
@router.smth("/")
async def foo(_=Depends(UnionAuth(scopes=[], allow_none=False, auto_error=True))):
  pass

Depends вызывает инстанс класса с нужными параметрами и возвращает словарь со всеми полями отсюда https://api.test.profcomff.com/#/Logout/me_me_get

Параметры конструктора UnionAuth

  • scopes: list[str] - список имен скоупов, которые нужны в данной ручке. Например ["printer.user.create", "printer.user.delete"]
  • allow_none: bool - Если true, то при отсутствии нужного заголовка в запросе ручка будет доступна юзеру, если заголовк передан, то обработка идет в зависимости от следующего параметра
  • auto_error: bool - если True, то при несовпадении скоупов/завершенной сессии и т.д. (на запрос GET /me не 200) - кинет 401, если False, то не будет кидать ошибки, но будет возвращать None

Чтобы задать хост авторизации надо в переменные окружения или в .env файл прописать AUTH_URL="..."

Настройки

auth_url="https://api.test.profcomff.com/auth/"
AUTH_AUTO_ERROR: bool = True
AUTH_ALLOW_NONE: bool = False

Тестирование сервисов

Установите нужные завивсимости

pip install 'auth-lib-profcomff[testing]'

Используйте маркировку для тестирования

import pytest
from fastapi.testclient import TestClient
from fastapi import FastAPI

@pytest.fixture
def client(auth_mock):
    yield TestClient(FastAPI())

@pytest.mark.authenticated("scope1", "scope2", ..., user_id=5)
def test1(client):
    """
    В этом тесте будут выданы скоупы scope1, scope2, user_id в ответе будет равен 5
    библиотека не будет проверять токен через АПИ, будет просто возвращать
    нужный словарь, как будто пользователь авторизован с нужными скоупами
    """
    assert 2*2 == 4


@pytest.mark.authenticated()
def test2(client):
    """
    В этом тесте скоупов выдано не будет, user_id будет равен 0
    но библиотека не будет проверять токен через АПИ, будет просто возвращать
    нужный словарь, как будто пользователь авторизован с нужными скоупами
    """
    assert 2*2 == 4


def test3(client):
    """
    В этом тесте скоупов выдано не будет, библиотека будет проверять
    токен через АПИ
    """
    assert 2*2 == 4

Contributing

  • Основная информация по разработке наших приложений

  • Ссылка на страницу с информацией по разработке auth-lib

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

auth_lib_profcomff-2024.8.4.tar.gz (15.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

auth_lib_profcomff-2024.8.4-py3-none-any.whl (12.4 kB view details)

Uploaded Python 3

File details

Details for the file auth_lib_profcomff-2024.8.4.tar.gz.

File metadata

  • Download URL: auth_lib_profcomff-2024.8.4.tar.gz
  • Upload date:
  • Size: 15.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for auth_lib_profcomff-2024.8.4.tar.gz
Algorithm Hash digest
SHA256 0d49fafb2b88fbecab1aaa254780f924e0110fd2b2376b2c82f3ba3b5e708964
MD5 3ac2c0091ac2209092a40b52001445ee
BLAKE2b-256 04cc6e43f74bca477ebf0f8c821618e0bd9a047ced0a8133e20a784503c70db6

See more details on using hashes here.

File details

Details for the file auth_lib_profcomff-2024.8.4-py3-none-any.whl.

File metadata

File hashes

Hashes for auth_lib_profcomff-2024.8.4-py3-none-any.whl
Algorithm Hash digest
SHA256 fc6ba914713a12a51aa2cdd13130361808cf6f483b4d87697020a840f2805558
MD5 4f56326de8e591b49d21438f6d663ec5
BLAKE2b-256 e9aa5525b3751c5391e4690bd1fe02d37d5136e749be7e199019495f663d5ea0

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

2024.8.4 This release

2 files

2024.6.22

2 files

2024.4.25.6

2 files

2024.4.25.5

2 files

2024.4.25.4

2 files

2024.4.25.2

2 files

2024.4.25.1

2 files

2024.4.25

2 files

2024.4.7.1

2 files

2024.4.7

2 files

2024.4.6

2 files

2023.8.6

2 files

2023.7.28

2 files

2023.7.9.1

2 files

2023.7.9

2 files

2023.5.11

2 files

2023.5.10

2 files

2023.4.23

2 files

2023.4.19

2 files

2023.3.16.2

2 files

2023.3.16

2 files

2023.3.14

2 files

2023.3.13.1

2 files

2023.3.13

2 files

2023.2.23

2 files

0.0.4

2 files

0.0.3

2 files

0.0.2

2 files

0.0.1

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page