описание
Издательство «Национальное образование» развивает образовательные сайты: подготовка к ЕГЭ и ОГЭ, педагогический клуб, онлайн-школа, платформа материалов к учебникам. У всех сайтов общий вход — через собственную систему единого входа ЕМАП (сервер авторизации по OpenID Connect: регистрация, вход через VK ID и Яндекс ID, роли и права, организации-школы, админка). К ЕМАП подключены все продукты, поэтому ошибка в нём останавливает всё. Сейчас систему разрабатывает подрядчик — мы ищем человека, который примет систему, станет её техническим владельцем и будет отвечать за то, как устроен вход и права во всех продуктах.
задачи
- разобрать ЕМАП целиком (протокол входа, выпуск и проверка токенов, ключи подписи, сессии, роли, организации, админка, интеграции с сайтами)
- поддерживать описание системы в актуальном состоянии
- принимать архитектурные решения и согласовывать их с техдиректором
- превращать запросы бизнеса в задачи с критериями готовности и оценкой
- дорабатывать бэкенд на Python (FastAPI, SQLAlchemy async, PostgreSQL)
- при необходимости — фронтенды входа, ЛК и админки (Vue 3 + TypeScript)
- подключать новые сайты и сервисы к единому входу
- следить за безопасностью (хранение паролей и ключей, защита от подбора, права в админке)
- писать и поддерживать автотесты (pytest, Playwright, Schemathesis)
- выкладывать версии через GitLab CI вместе с инженерами эксплуатации
- проверять подключённые сайты после выкладки
- разбирать инциденты по логам и Sentry
- следить за нагрузкой в пиковые периоды (начало учебного года, подготовка к экзаменам)
- 1–2 месяца работать вместе с подрядчиком, принимать работу по результату и забирать знания и доступы
- консультировать бэкенд, фронтенд, онлайн-школу и тестировщиков по вопросам входа и прав
- вести документацию в Confluence
требования
- 5+ лет коммерческой разработки на Python; уверенно FastAPI или другой асинхронный фреймворк, SQLAlchemy.
- Глубокое понимание OAuth 2.0 и OpenID Connect с серверной стороны: authorization code с PKCE, refresh-токены, JWT, JWK, ротация ключей, logout, consent, scopes.
- Опыт разработки или доработки сервера авторизации, а не только подключения к готовому.
- Опыт проектирования систем: уметь описать архитектуру, выбрать решение и объяснить почему именно его.
- Системный анализ: собрать требования, описать сценарии и критерии готовности, оценить трудоёмкость.
- Безопасность веб-приложений: OWASP Top 10, хранение паролей и секретов, права доступа.
- PostgreSQL: запросы, индексы, миграции, разбор медленных запросов.
- Фронтенд на уровне чтения и правки: Vue 3 или React, TypeScript.
- Docker, Kubernetes на уровне «собрать, выложить, посмотреть логи», GitLab CI.
- Умение разбираться в чужом коде без описания и доводить работу до прода.
- Работа с ИИ-помощниками (Claude Code, Cursor или похожие) как обычная часть процесса.
- Будет плюсом: Опыт с Keycloak, Ory, Authentik — понимание, чем свой сервер отличается от готового; Вход через VK ID и Яндекс ID; Elasticsearch, Playwright, Sentry; Опыт в продуктах с большим числом пользователей и разными типами (ученики, родители, учителя, школы); Опыт приёмки работ у подрядчиков
условия
- Удалённо, из любого региона России, полная занятость.
- Оформление в штат по ТК РФ.
- Готовы рассмотреть быстрый выход — старт в течение 1–2 недель.
- Подчинение техническому директору; работа в связке с руководителями групп бэкенда, фронтенда, тестирования и эксплуатации.
- Задачи и документация — Jira и Confluence, код — GitLab.