roadmap - nullpointerfan/gin-oauth GitHub Wiki

🚀 Roadmap по улучшению библиотеки ginoauth


✅ Версия 1.0 — Базовая функциональность (уже реализована)

Задача Статус
Поддержка Google и Casdoor
Авторизация через OAuth2
Хранение токенов в куках с подписью
Обновление истёкших токенов
Получение данных пользователя

🔐 Версия 1.1 — Безопасность

Задача Описание
🔒 Динамическая генерация state Генерировать случайный state, сохранять в cookie или session.
🧾 Проверка nonce (для OpenID Connect) Использовать nonce при работе с Google и Casdoor (OpenID).
🛡️ Настройка параметров безопасности кук Возможность задавать Secure, HttpOnly, SameSite, MaxAge.
⚠️ Логирование ошибок Не просто паниковать или писать в JSON, а логировать ошибки.
📜 Валидация входных данных Проверять конфигурацию, URL, секреты и т.п.

🔄 Версия 1.2 — Расширяемость и поддержка провайдеров

Задача Описание
🧩 Поддержка других провайдеров GitHub, Facebook, Microsoft, Auth0 и др.
🧱 Абстракция OAuth-провайдера Создать интерфейс OAuthProvider для легкой интеграции новых провайдеров.
🧪 Поддержка кастомных UserInfo-эндпоинтов Возможность указывать свой эндпоинт /userinfo.
📦 Поддержка JWT-токенов Некоторые провайдеры возвращают JWT вместо простых строк.

🧰 Версия 1.3 — Удобство использования

Задача Описание
📄 Добавление полноценной документации godoc, примеры, FAQ, README.md.
💡 Поддержка контекста и таймаутов Использовать context.WithTimeout при HTTP-запросах.
📏 Настройка времени жизни токена Возможность задавать MaxAge кук через конфигурацию.
🧼 Чистка кода: устранение дублирования Вынести общие методы в отдельные утилиты.
🎯 Унифицированный обработчик ошибок Централизованная обработка ошибок с пользовательскими сообщениями.

🧪 Версия 1.4 — Тестирование

Задача Описание
🧪 Unit-тесты Для всех основных функций: проверка подписи, парсинг кук, обмен токенов.
🌐 Интеграционные тесты Мок-сервер для имитации OAuth-провайдера.
🧹 Тесты на очистку сессии Проверить работу LogoutHandler.
📊 Покрытие тестами Цель: не менее 80% покрытия.

🔁 Версия 1.5 — Продвинутая сессия

Задача Описание
🔄 Поддержка глобального выхода (End Session) Реализовать end_session_endpoint для Google/Casdoor.
🧠 Хранение сессий в хранилище (Redis, DB) Вместо кук — хранить данные сессии централизованно.
📈 Поддержка нескольких сессий Разрешить несколько активных сессий на разных устройствах.

🧩 Версия 1.6 — Дополнительные фичи

Задача Описание
🧑‍🤝‍🧑 Поддержка Group/Role из UserInfo Добавить поля Roles, Groups в UserInfoResponse.
🧩 Middleware для проверки роли Например: auth.AuthenticateWithRole("admin").
🧬 Поддержка OIDC Discovery Автоматическое получение эндпоинтов из .well-known/openid-configuration.
🧾 Webhook-поддержка Уведомления о событиях: login, logout, token refresh.

🧭 Долгосрочные планы (v2.x)

Задача Описание
🧵 Поддержка мульти-провайдерной авторизации Пользователь может войти через разные сервисы.
🧱 Реактирование на go-kit / chi Возможность использовать библиотеку с другими роутерами.
📡 Поддержка JWT Bearer Token в заголовке Совместимость с API-клиентами, которые передают токены в Authorization.
📦 Поддержка модулей Go (Go modules) Полная поддержка современных стандартов Go.