roadmap - nullpointerfan/gin-oauth GitHub Wiki
ginoauth
🚀 Roadmap по улучшению библиотеки ✅ Версия 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. |