jwt authorization server


License
Apache-2.0
Install
pip install jwtserver==0.0.27

Documentation

JWT server

JWTServer лёгкий и быстрый микросервис JWT.

Package version Supported Python versions

JWT Server является микросервисом для авторизации пользователей. Имеющий гибкие настройки и разные версии API.

  • Подключение Google Recaptcha V3
  • Отправка кода через сервис https://smsc.ru/ (стадия тестирования)

Особенности

  • Быстрый старт
  • Походит для тестирования frontend
  • Основан на Fast API framework и вдохновлен работами tiangolo

Route Entrypoints

Login

  • [POST] - /api/v1/login/access-token
  • [POST] - /api/v1/login/test-token
  • [POST] - /api/v1/password-recovery/{email}
  • [POST] - /api/v1/reset-password/
  • [POST] - /api/v1/phone_status/

Users

  • [GET] - /api/v1/users/
  • [POST] - /api/v1/users/
  • [GET] - /api/v1/users/me
  • [PUT] - /api/v1/users/me
  • [POST] - /api/v1/users/open
  • [GET] - /api/v1/users/{user_id}
  • [PUT] - /api/v1/users/{user_id}

Utils

  • [POST] - /api/v1/utils/test-celery/
  • [POST] - /api/v1/utils/test-email/

Items

  • [GET] - /api/v1/items/
  • [POST] - /api/v1/items/
  • [GET] - /api/v1/items/{id}
  • [PUT] - /api/v1/items/{id}
  • [DELETE] - /api/v1/items/{id}

Поддержка кода https://github.com/goltsevnet/jwtserver


Зависимости

Установка

python -m pip install jwtserver 

Подготовьте базу данных Postgres 14 и выше версии.

Используйте как вариант docker-compose.yaml

version: '3.1'

services:
  db:
    image: postgres:14.1-alpine
    restart: always
    build: .
    environment:
      POSTGRES_PASSWORD: example
    ports:
      - 5433:5432

Обязательно добавьте переменную в среду: POSTGRES__DSN для миграций.

Выполните команду:

upgradehead

Должны увидеть:

INFO  [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO  [alembic.runtime.migration] Will assume transactional DDL.
INFO  [alembic.runtime.migration] Running upgrade  -> 98f3d19d2c0d, initial

Остальные переменные можно добавить в файл .env или через dotenv.

ENVIRONMENT=production
PROJECT_NAME=JwtServer

SMS__LOGIN=login
SMS__PASSWORD=password
SMS__IGNORE_ATTEMPTS=True

POSTGRES__DSN=postgresql+psycopg2://postgres:example@localhost:5433/postgres

RECAPTCHA=True

GOOGLE__RECAPTCHA__SECRET_KEY=SECRET_KEY
TOKEN__V1_SOL=12345679100987654321
TOKEN__SECRET_KEY=SECRET_KEY
TOKEN__ACCESS_TOKEN_EXPIRE_MINUTES=90
API_V1_STR=/api/v1

Примеры:

Для разработки

  • создайте файл dev.py
from jwtserver.server import dev

if __name__ == "__main__":
    dev(host="localhost", port=5000, log_level="info")

Интерактивная API документация

откройте Interactive API docs http://localhost:5000/docs

Вы увидите автоматическую интерактивную документацию по API.

Альтернативная API документация

откройте Alternative API redoc http://localhost:5000/redoc

Для продукции

  • создайте файл main.py
from jwtserver.app import app

app.debug = False
  • Gunicorn: gunicorn main:app

Лицензия

Этот проект находится под лицензией Apache 2.0.