Перейти к содержимому

Аутентификация

Настройте локальную аутентификацию, дополнительный вход в систему OpenID Connect и восстановление учетной записи.

Настройка при первом запуске

После развертывания новой установки откройте ее общедоступный 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.

Локальные группы доступа