EskTech.Единый вход - российский корпоративный сервис единого входа (Single Sign-On). Объединяет Jira, GitLab, 1С, Битрикс24, МойОфис, VK Teams и любые другие сервисы через стандартные протоколы OIDC, SAML, LDAP и OAuth2.
🔐 Код открыт. Никаких сюрпризов.
email - eskander5765@yandex.ru
| Протокол | Статус | Сервис |
|---|---|---|
| OIDC | ✅ | GitLab (протестировано) |
| SAML 2.0 | ❌ | Jira Atlassian(следующий) |
| OAuth 2.0 | ❌ | Yandex ID |
| SAML 2.0 | ❌ | ЕСИА (Госуслуги) |
| LDAP | ❌ | Jira On-Premise, Битрикс24 On-Premise, корпоративные VPN |
| JWT (прокси) | ❌ | 1С, любые кастомные системы |
- Заменить ip https://192.168.1.104:8000 на ip вашей хостовой машины(скрипт:
hostname -I) в файлах:
- config.py
- .env
- connect-gitlab-sso.sh
- Пересобрать сертификаты через generate-certs.sh(выполнить запуск в корневой директории проекта)
- Иметь предустановленную систему podman/docker
- Перейти в корневую директорию проекта
- Выполнить сборку docker-compose-gitlab.yml | через make podman-build или свой скрипт
- Выполнить запуск docker-compose-gitlab.yml | через make podman-up или свой скрипт
- Подождать 2-3 минуты прогрузки Gitlab
- Выполнить запуск скрипта connect-gitlab-sso.sh
- Дождаться окончания выполнения скрипта + ожидание в 1-2 минуты реконфигурации Gitlab
- Добавить пользователя через https://<ваш-ip>/api/v0/admin/clients -> секция Пользователей
- Выполнить вход в Gitlab через EskTech SSO(будет кнопка снизу на странице входа)
- Вввести логин и пароль от созданного пользователя и нажать кнопку входа
| Возможность | EskTech SSO (Полностью бесплатно) |
|---|---|
| Единый вход для всех сервисов | ✅ |
| OIDC / OAuth2 провайдер | ✅ |
| LDAP-адаптер (AD / OpenLDAP) | ✅ |
| JWT-верификация | ✅ |
| Opaque-токены (удалённый отзыв токенов) | ✅ |
| SAML 2.0 | ✅ (планируется) |
| Адаптер для 1С | ✅ (планируется) |
| Адаптер для Битрикс24 | ✅ (планируется) |
| Количество сервисов | безлимит |
| Количество источников истины | безлимит |
| Техподдержка | сообщество / автор проекта |
| Обновления и патчи | открытый репозиторий |
| Цена | 0 ₽ |
| Протокол | Статус | Для каких сервисов |
|---|---|---|
| OIDC | ✅ | Jira Cloud, GitLab, VK Teams, МойОфис, Grafana, Kibana, сотни других |
| LDAP | ✅ | Jira On-Premise, Битрикс24 On-Premise, корпоративные VPN(планируется) |
| JWT (прокси) | ✅ | 1С, любые кастомные системы(планируется) |
| SAML 2.0 | 🚧 | Legacy-системы, госсектор(планируется) |
| OAuth2 | ✅ | API-шлюзы, микросервисы(планируется) |
location / {
auth_request /validate;
proxy_pass http://1c-backend;
}
location = /validate {
internal;
proxy_pass https://esktech.example.com/verify;
proxy_set_header Authorization "Bearer $http_authorization";
}Настройте LDAP-адаптер в Битрикс24, указав EskTech как LDAP-сервер
Монолит на FastAPI с модульной структурой:
esktech-sso
├─ app/ # Основной код приложения
│ ├── db # Работа с БД
│ │ ├── models.py # SQLAlchemy модели (User, OAuthClient, OAuthCode, OAuthToken)
│ │ │ ├── auth_models.py # Модели авторизации
│ │ │ ├── base.py # Базовая модель
│ │ │ └── user_models.py # Модели пользователей
│ │ ├── oauth.py # Класс для взаимодействия с авторизацией
│ │ └── users.py # Класс для взаимодействия с пользователями
│ ├── endpoints # API эндпоинты
│ │ ├── oidc # Статичные эндпоинты SSO для OIDC
│ │ │ └── oidc_api.py # OIDC: /authorize, /token, /userinfo, /jwks, discovery
│ │ └── v0 # Версия API v0
│ │ ├── admin.py # Админка OIDC-клиентов (создание, удаление)
│ │ ├── users.py # CRUD пользователей (список, создание, редактирование, удаление)
│ │ └── health.py # Healthchecks (/health/live, /health/ready)
│ ├── locale # Интернационализация(eng, rus)
│ ├── models # Pydantic модели
│ │ ├── general.py # Общие модели
│ │ ├── msg.py # Общие сообщения
│ │ └── users.py # Модели пользователей для запросов
│ ├── services # Бизнес-логика
│ │ ├── pool # Директория с пулами соединений сервисов
│ │ │ ├── db_pool.py # Пул соединений БД(PostgreSQL)
│ │ │ └── redis_pool.py # # Пул соединений Redis
│ │ ├── localization.py # Класс для работы с интернационализацией
│ │ ├── redis_srv.py # Класс для работы с Redis
│ │ └── sources.py # Аутентификация пользователя по всем доступным источникам
│ ├── templates_static # HTML шаблоны (Jinja2)
│ │ ├── admin_clients.html # Админка OIDC-клиентов
│ │ └── login.html # Страница логина
│ ├── tests # Тесты
│ │ ├── e2e # Сквозные тесты
│ │ ├── integration # Интеграционные тесты
│ │ ├── unit # Unit-тесты
│ │ ├── config_tests_sample.py # Конфиг тестов
│ │ └── conftest.py # Фикстуры (клиент, БД для тестов)
│ ├── utils # Утилиты
│ │ ├── cli.py # CLI для взаимодействия с командной строкой
│ │ ├── ldap_client.py # Подключение к LDAP/Active Directory
│ │ ├── password_validator.py # Хеширование и проверка паролей (bcrypt)
│ │ └── secrets.py # Инструменты для работы с секретными ключами
│ ├── auth_server.py # OIDC-сервер на Authlib (гранты, токены, клиенты)
│ ├── config.py # Конфигурация (Pydantic Settings, переменные окружения)
│ ├── constants.py # Константные переменные
│ ├── log.py # Система логгирования
│ └── main.py # FastAPI приложение, lifespan, роутеры
├── docs # Обновления проекта
├── .env.example # Пример переменных окружения
├── .gitignore # Файл для игнорирования мусора при работа с Git
├── CODE_OF_CONDUCT.md # Кодекс поведения участника
├── connect-gitlab-sso.sh # Скрипт для подключения EskTech.Единый вход в Gitlab
├── CONTRIBUTING.md # Как внести вклад в EskTech SSO
├──docker-compose-gitlab.yml # Файл для развертывания EskTech.Единый вход с Gitlab
├── Dockerfile # Сборка образа (Python 3.12-slim + зависимости)
├── generate-certs.sh # Скрипт сборки сертификатов для EskTech.Единый вход
├── generate_rsa_keys.sh # Скрипт для генерации RSA-ключей (2048 бит) SSO-сервера
├── LICENSE # AGPLv3
├── Makefile # Утилиты: run, test, format, deps
├── pyproject.toml # Poetry конфигурация (для разработки)
├── requirements.txt # Python зависимости (pip)
└── SECURITY.md # Политика безопасностиEskTech SSO распространяется под лицензией GNU AGPL v3.
Код полностью открыт, вы можете использовать продукт бесплатно для любых целей.
Коммерческая поддержка и дополнительные сервисы (мониторинг безопасности, PAM, RBAC) предоставляются отдельно — по запросу.
Email: eskander5765@yandex.ru
Если вам полезен EskTech SSO:
Российская разработка. Сделано с нуля.