jwt authorization server


License
Apache-2.0
Install
pip install jwtserver==0.0.40

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.