Skip to content

🚀 [DX/Infra] Настройка локального Keycloak и Token Exchange для Google IdP #355

Description

@ulanpy

🚀 [DX/Infra] Настройка локального Keycloak и Token Exchange для Google IdP

📌 Контекст и Проблема

Наше приложение использует Keycloak для аутентификации пользователей и вызова exchange_token_for_idp(..., requested_issuer="google") для получения токенов Google API.

Для автономной локальной разработки контрибьюторам нужен преднастроенный контейнер Keycloak с готовым Realm'ом, тестовыми пользователями и эмуляцией Identity Provider (Google), чтобы Token Exchange работал «из коробки» без подключения к реальной консоли Google Cloud.


🎯 Цель

Развернуть локальный контейнер Keycloak в docker-compose.yml с автоматическим импортом конфигурации (Realm Export), поднять тестовых пользователей и обеспечить локальную работу Token Exchange.


🛠 Список задач (To-Do)

1. Конфигурация Realm (Keycloak)

  • Создать файл экспорта infra/mocks/keycloak/realm-export.json со следующей базовой конфигурацией:
    • Realm: nuros-dev
    • Client: nuros-backend (с включенной фичей Token Exchange / Fine-Grained Permissions)
    • Test User: test_user / password123
    • Identity Provider: настроить провайдер google (или его эмуляцию через mock-oauth2-server / stub-секреты).

2. Инфраструктура (Docker Compose)

  • Добавить сервис Keycloak в docker-compose.yml:
    keycloak:
      image: quay.io/keycloak/keycloak:24.0
      container_name: nuros_keycloak
      command: start-dev --import-realm
      environment:
        KEYCLOAK_ADMIN: admin
        KEYCLOAK_ADMIN_PASSWORD: admin
        KC_FEATURES: token-exchange
      ports:
        - "8080:8080"
      volumes:
        - ./infra/mocks/keycloak/realm-export.json:/opt/keycloak/data/import/realm-export.json:ro

Metadata

Metadata

Assignees

No one assigned

    Labels

    DevOpsbackendbug related to server issuesenhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions