Skip to main content

Lightweight and extensible Python library for generating and verifying JWT tokens with multiple algorithms (HS256, ES256, RS256, etc.). Built on PyJWT, it provides an intuitive interface, flexible configuration, and secure key storage.

Project description

🔐 JWTifyPy

JWTifyPy — это легковесная и расширяемая Python-библиотека для генерации и проверки JWT-токенов с поддержкой различных алгоритмов (HS256, ES256, RS256 и др.).
Библиотека построена поверх PyJWT и предоставляет интуитивный интерфейс, удобную конфигурацию и безопасное хранилище ключей — всё, что нужно для работы с JWT.


📦 Установка

pip install jwtifypy

⚙️ Опциональные зависимости

Для работы с переменными окружения (.env) и криптографическими алгоритмами (ES256) используются дополнительные пакеты: python-dotenv и cryptography. Они подключаются как опциональные зависимости и не устанавливаются по умолчанию.

Чтобы установить библиотеку с нужными дополнительными пакетами, используйте extras:

  • С поддержкой переменных окружения (dotenv):
pip install jwtifypy[env]
  • С поддержкой криптографии:
pip install jwtifypy[crypto]
  • Полный набор дополнительных возможностей:
pip install jwtifypy[full]

🚀 Быстрый старт

🔧 Инициализация

from jwtifypy import JWTConfig

JWTConfig.init(config={
    "keys": {
        "algorithm": "HS256",
        "secret": "env:MY_SECRET_ENV"
    }
})

🪪 Создание токена

from jwtifypy import JWTManager

# 📥 Токен по умолчанию
token = JWTManager().create_access_token("user123")
print(token)
# 👉 eyJhbGciOiJIUzI1NiIsInR5cCI6...

# 🔑 Токен с именованным ключом
admin_token = JWTManager("admin").create_access_token("admin42")
print(admin_token)

⚙️ Основные возможности

  • ✅ Поддержка алгоритмов HS256, ES256, RS256, и др.
  • 🔐 Хранилище ключей по именам (default, admin, service-X…)
  • 📤 Простой интерфейс создания/декодирования JWT
  • 🛠 Расширяемая архитектура для нестандартных сценариев
  • ⏱ Поддержка стандартных claim'ов: sub, exp, iat, aud, и др.

🧩 Кастомная конфигурация

from jwtifypy import JWTConfig

JWTConfig.init(config={
    "keys": {
        # 🔑 Симметричный ключ (HS256) — используется общий секрет
        "default": {
            "alg": "HS256",
            "secret": "secret"
        },

        # 🔐 Асимметричный ключ (RS256) — RSA, ключи читаются из файлов
        "admin": {
            "algorithm": "RS256",
            "private_key": "file:/path/to/private.pem",
            "public_key": "file:/path/to/public.pem"
        },

        # 🧬 Асимметричный ключ (ES256) — ECDSA, приватный ключ из переменной окружения
        # public_key будет автоматически сгенерирован, если установлена библиотека `cryptography`
        "service": {
            "alg": "ES256",
            "private_key": "env:PRIVATE_KEY"
        }
    },

    # ⏱ Leeway в секундах — допускаемая погрешность в проверке времени (exp, iat)
    "leeway": 1.0,

    # ⚙️ Дополнительные опции валидации (соответствуют PyJWT)
    "options": {
        "verify_sub": False  # Не проверять наличие claim "sub"
    }
})

🔎 Верификация токена

from jwtifypy import JWTManager

token = JWTManager.create_access_token("user123")
payload = JWTManager.decode_token(token)
print(payload["sub"])  # 👉 user123

🗂️ Структура проекта

jwtifypy/
├── __init__.py          # Основной интерфейс библиотеки
├── manager.py           # Класс JWTManager
├── config.py            # Конфигурация и инициализация
├── key.py               # Обработка ключей (HS/RS/ES)
├── store.py             # Хранилище JWTKeyStore
├── exceptions.py        # Кастомные исключения
└── utils.py             # Вспомогательные утилиты

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

pytest tests/

🛡️ Рекомендации по безопасности

  • Не храните секреты в коде. Используйте переменные окружения.
  • 🔐 Используйте RS256/ES256 для межсервисной авторизации.
  • ⏳ Устанавливайте короткое время жизни токенов (exp).
  • 🔎 Включайте и проверяйте claims, если безопасность важна (iss, aud, sub).

📜 Лицензия

MIT © 2025 Created by [LordCode Projects] / [Dybfuo Projects]

Project details


Download files

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

Source Distribution

jwtifypy-0.1.0.tar.gz (7.3 kB view details)

Uploaded Source

Built Distribution

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

jwtifypy-0.1.0-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

File details

Details for the file jwtifypy-0.1.0.tar.gz.

File metadata

  • Download URL: jwtifypy-0.1.0.tar.gz
  • Upload date:
  • Size: 7.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.11.13 Linux/6.11.0-1018-azure

File hashes

Hashes for jwtifypy-0.1.0.tar.gz
Algorithm Hash digest
SHA256 fcec5769b4d5fa265121c82a754981270af05b74f0487ec6c1921d20326a63bb
MD5 2a826b7aefc287deb4b6ac94f8cd9fcc
BLAKE2b-256 2537ccf9d88beb30358cdc6a848fdeda791b9bd6fee1f3ce2f9d4286cadf1b87

See more details on using hashes here.

File details

Details for the file jwtifypy-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: jwtifypy-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 9.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.11.13 Linux/6.11.0-1018-azure

File hashes

Hashes for jwtifypy-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ed62537a1d366d77e79aab1e013666e5cf06c3b9162e75a2dcc949ee7f543cdd
MD5 6985025f024584d938f2ad0f9f8cf76d
BLAKE2b-256 8a854ff61f0c4d01d4f3e36d3c7a511ea296de8a3d3d6b0a5eb01fe5de9a8672

See more details on using hashes here.

Supported by

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