Аутентификация
Настройка при первом запуске
После развертывания новой установки откройте ее общедоступный URL-адрес. Repovio перенаправляет каждый запрос на
/auth/setup до тех пор, пока не появится первая учетная запись. Введите необязательное имя и фамилию, уникальное имя
пользователя и пароль длиной не менее 12 символов. Учетная запись создается в качестве системного администратора и сразу
же входит в нее.
Установка может быть успешной только один раз. После существования первого пользователя /auth/setup перенаправляется
на /auth/signin. Существующие установки сохраняют своих текущих пользователей во время обновлений и больше не
отображают настройки.
Система единого входа OpenID Connect
Repovio поддерживает одного дополнительного поставщика OpenID Connect в дополнение к локальному входу. Системный администратор настраивает его в разделе Настройки → Аутентификация. Этот логин отделен от GitHub, GitLab, Forgejo и Gitea провайдера OAuth: OIDC идентифицирует пользователя Repovio, тогда как провайдер OAuth предоставляет только доступ на чтение к ресурсам провайдера.
Прежде чем настраивать провайдера, установите точный URL-адрес обратного вызова API, доступный извне:
PUBLIC_URL=https://repovio.example.com
OIDC_CALLBACK_URL=https://repovio.example.com/api/v1/auth/oidc/callback
Зарегистрируйте значение OIDC_CALLBACK_URL в качестве разрешенного URI перенаправления у поставщика удостоверений.
Настройте его эмитента, идентификатор клиента, дополнительный секрет клиента, области и утверждение группы в Repovio.
API принимает секрет клиента при сохранении, но никогда не возвращает его значение. Неактивное состояние зашифровано с
помощью TOKEN_ENCRYPTION_KEY. Сохраните конфигурацию перед использованием Проверить соединение; несохраненные
изменения отключают эту проверку. Подтвердите успешное обнаружение, прежде чем полагаться на вход в систему OIDC.
HTTPS требуется для эмитента и его конечных точек. Разрешить отправитель HTTP предназначен только для изолированных лабораторных сетей; его никогда нельзя включать для развертывания с доступом через Интернет. Вход в систему с локальным паролем остается доступным в качестве пути восстановления, даже если OIDC включен.
В форме также отображается URL-адрес обратного вызова для копирования, настроенные/наблюдаемые группы и отдельные элементы управления для замены или очистки сохраненного секрета клиента. Если оставить замену отключенной, сохраненный секрет сохранится. О сбоях загрузки, сохранения и проверки соединения сообщается отдельно. Исправьте неверную конфигурацию и сохраните ее еще раз, прежде чем повторить проверку соединения.
Группы, роли и удостоверения
Утверждение группы может представлять собой одно точное имя утверждения или путь, разделенный точкой, например
realm_access.groups. Настройте точные значения группы с учетом регистра для трех ролей Repovio. Если совпадают
несколько групп, Repovio применяет SYSTEM_ADMIN, затем MANAGER, затем VIEWER. Заявки на несовпадающие, неправильно
сформированные, отсутствующие или слишком большие групповые заявки отклоняются, если только явно не включен параметр
Разрешить несовпадающим пользователям в качестве средства просмотра.
Учетная запись OIDC связана только проверенной парой эмитента и субъекта. Repovio никогда не связывает логин OIDC с локальной учетной записью по адресу электронной почты или имени пользователя. Имя и фамилия синхронизируются из проверенных заявок при каждом успешном входе в систему; имя пользователя, имена профилей и пароль нельзя изменить локально. Членство в репозитории остается управляемым в Repovio и никогда не определяется группами поставщиков удостоверений.
Изменения настроек, связанных с безопасностью, или роли делают существующие bearer-токены OIDC недействительными. Изменение только отображаемого имени провайдера не делает существующие токены OIDC недействительными. Отключение или удаление группы провайдера идентификации не позволяет затронутой учётной записи получить новый сеанс и делает предыдущие сеансы недействительными после следующей отклонённой попытки входа.
Примеры поставщиков
Для Authentik создайте поставщика OAuth2/OpenID с потоком кода авторизации, точным URL-адресом обратного вызова,
указанным выше, и областями openid, profile и email. Добавьте сопоставление области, которое возвращает выбранное
утверждение группы в виде массива имен групп, присоедините поставщика к приложению, затем скопируйте издателя
приложения, идентификатор клиента и секрет клиента в Repovio.
Для другого совместимого со стандартами поставщика включите поток кода авторизации, требуйте S256 PKCE, зарегистрируйте
точный URL-адрес обратного вызова и включите стабильный sub, а также настроенное утверждение группы в токен
идентификатора или ответ UserInfo. Repovio принимает только асимметричные подписи ID-токена и отклоняет неподписанные
токены и токены, подписанные HMAC.
OIDC Контракт API
| Метод | Путь | Доступ | Цель |
|---|---|---|---|
GET | /api/v1/auth/oidc/status | Публичный | Возвращает только фактическую доступность и необязательное имя поставщика. |
GET | /api/v1/auth/oidc/start | Публичный | Запускает код авторизации с привязкой к браузеру и транзакцию S256 PKCE. |
GET | /api/v1/auth/oidc/callback | Публичный | Проверяет ответ поставщика и выполняет перенаправление с помощью одноразового фрагмента кода. |
POST | /api/v1/auth/oidc/exchange | Публичный | Использует код фрагмента один раз и возвращает обычный носитель AuthResult. |
GET, PUT | /api/v1/auth/oidc/config | Системный администратор | Считывает или обновляет секретные настройки OIDC. |
POST | /api/v1/auth/oidc/check | Системный администратор | Проверяет сохраненную конфигурацию обнаружения, не изменяя ее. |
Обратный вызов никогда не помещает JWT-носитель в URL-адрес. Его непрозрачный код обмена истекает через 60 секунд и может быть использован только один раз. Ошибки провайдера сводятся к стабильным кодам ошибок до того, как они достигнут браузера или журналов.
Измените свой пароль
Войдя в систему, откройте Настройки → Общие → Изменить пароль. Введите текущий пароль, новый пароль и его подтверждение. Repovio сохраняет вход в текущий браузер с использованием заменяющего токена доступа и делает недействительными токены, хранящиеся во всех остальных сеансах входа в систему.
Сброс забытого пароля
Repovio намеренно не имеет сброса пароля по электронной почте. Администратор развертывания может сбросить локальную
учетную запись из каталога, содержащего compose.yml. Прочитайте заменяющий пароль, не повторяя его и не сохраняя в
истории оболочки, а затем отправьте его в контейнер API через стандартный ввод:
read -rsp 'New Repovio password: ' REPOVIO_NEW_PASSWORD
printf '\n'
printf '%s\n' "$REPOVIO_NEW_PASSWORD" \
| docker compose exec -T api node dist/scripts/reset-password.js USERNAME
unset REPOVIO_NEW_PASSWORD
Замените USERNAME точным именем пользователя для входа. Для этой команды требуется пароль длиной от 12 до 256
символов, она обновляет только эту локальную учетную запись и делает недействительными все существующие токены доступа.
После этого войдите снова с новым паролем. Команда отклоняет учетные записи, управляемые OIDC, поскольку у них нет
локального пароля.
Локальные группы доступа
В разделе группового доступа репозитория назначьте Viewer или Manager, измените или удалите право. Прямые и групповые права объединяются, Manager сильнее. Управление требует глобальной роли Manager; системные администраторы не ограничены. Отзыв действует со следующего запроса, если нет другого права. Группы работают с локальными и OIDC-записями, без синхронизации OIDC claims.