Этот шаблон предоставляет базовый сервер на фреймворке Axum с поддержкой аутентификации через OAuth2 (Google).
- OAuth2 аутентификация: Интеграция с Google OAuth2 для аутентификации пользователей
- Защищенные маршруты: Пример защищенного маршрута, требующего Bearer токен
- Сессии: Простое управление сессиями с использованием session_id
- CORS: Поддержка CORS для веб-клиентов
axum-oauth-server/
├── Cargo.toml # Зависимости проекта
├── src/
│ └── main.rs # Основной код сервера
└── README.md # Этот файл
-
Создайте проект Google OAuth2:
- Перейдите в Google Cloud Console
- Создайте новый проект или выберите существующий
- Включите Google+ API
- Создайте учетные данные OAuth2 (Client ID и Client Secret)
- Добавьте
http://localhost:3000/auth/callbackв Authorized redirect URIs
-
Настройте переменные окружения:
- Скопируйте
.env.exampleв.env - Заполните реальные значения для
GOOGLE_CLIENT_IDиGOOGLE_CLIENT_SECRET
- Скопируйте
cargo runСервер будет запущен на http://localhost:3000.
Возвращает URL для перенаправления пользователя на страницу аутентификации Google.
Ответ:
{
"auth_url": "https://accounts.google.com/o/oauth2/auth?..."
}Обрабатывает callback от Google OAuth2 и возвращает session_id.
Ответ:
{
"access_token": "session_id"
}Защищенный маршрут, требующий Bearer токен в заголовке Authorization.
Заголовки:
Authorization: Bearer <session_id>
Ответ (успешный):
{
"message": "Access granted"
}Ответ (ошибка):
{
"error": "Unauthorized"
}- Получите auth_url через
/auth/login - Перенаправьте пользователя на этот URL
- После аутентификации Google перенаправит на
/auth/callback - Используйте полученный session_id как Bearer токен для доступа к защищенным маршрутам
axum: Веб-фреймворкtokio: Асинхронный runtimeoauth2: Библиотека для OAuth2serde: Сериализация/десериализацияtower-http: HTTP middlewareuuid: Генерация уникальных идентификаторов
Этот шаблон можно расширить добавлением:
- Поддержки других OAuth2 провайдеров (GitHub, Facebook, etc.)
- JWT токенов вместо session_id
- Базы данных для хранения сессий
- Ролей и разрешений пользователей
- Дополнительных защищенных маршрутов