Passer au contenu

Authentification

Configurez l'authentification locale, la connexion facultative à OpenID Connect et la récupération de compte.

Configuration de première exécution

Après avoir déployé une nouvelle installation, ouvrez son URL publique. Repovio redirige chaque demande vers /auth/setup jusqu'à ce que le premier compte existe. Saisissez un prénom et un nom facultatifs, un nom d'utilisateur unique et un mot de passe d'au moins 12 caractères. Le compte est créé en tant qu'administrateur système et connecté immédiatement.

L'installation ne peut réussir qu'une seule fois. Une fois le premier utilisateur existant, /auth/setup redirige vers /auth/signin. Les installations existantes conservent leurs utilisateurs actuels pendant les mises à niveau et n'affichent plus la configuration.

Authentification unique OpenID Connect

Repovio prend en charge un fournisseur OpenID Connect en option en plus de la connexion locale. Un administrateur système le configure sous Paramètres → Authentification. Cette connexion est distincte du fournisseur GitHub, GitLab, Forgejo et Gitea OAuth : OIDC identifie un utilisateur Repovio, tandis que le fournisseur OAuth accorde uniquement un accès en lecture aux ressources du fournisseur.

Définissez l'URL de rappel d'API exacte accessible en externe avant de configurer le fournisseur :

PUBLIC_URL=https://repovio.example.com
OIDC_CALLBACK_URL=https://repovio.example.com/api/v1/auth/oidc/callback

Enregistrez la valeur de OIDC_CALLBACK_URL en tant qu’URI de redirection autorisé auprès du fournisseur d’identité. Configurez son émetteur, son ID client, son secret client facultatif, ses étendues et sa revendication de groupe dans Repovio. L'API accepte le secret client lors de l'enregistrement mais ne renvoie jamais sa valeur. Il est chiffré au repos avec TOKEN_ENCRYPTION_KEY. Enregistrez la configuration avant d'utiliser Vérifier la connexion ; les modifications non enregistrées désactivent cette vérification. Confirmez la réussite de la découverte avant de vous fier à la connexion OIDC.

HTTPS est requis pour l'émetteur et ses points de terminaison. Autoriser l'émetteur HTTP est uniquement destiné aux réseaux de laboratoire isolés ; il ne doit jamais être activé pour un déploiement accessible sur Internet. La connexion par mot de passe local reste disponible comme chemin de récupération même lorsque OIDC est activé.

Le formulaire affiche également l'URL de rappel pour la copie, les groupes configurés/observés et les contrôles distincts pour remplacer ou effacer le secret client stocké. Laisser le remplacement désactivé préserve le secret enregistré. Les échecs de chargement, de sauvegarde et de vérification de connexion sont signalés séparément. Corrigez la configuration invalide et enregistrez à nouveau avant de réessayer la vérification de la connexion.

Groupes, rôles et identités

La revendication de groupe peut être un nom de revendication exact ou un chemin séparé par des points, tel que realm_access.groups. Configurez des valeurs de groupe exactes et sensibles à la casse pour les trois rôles Repovio. Si plusieurs groupes correspondent, Repovio applique SYSTEM_ADMIN, puis MANAGER, puis VIEWER. Les revendications de groupe sans correspondance, mal formées, manquantes ou trop grandes sont refusées, sauf si Autoriser les utilisateurs sans correspondance en tant que visualiseur est explicitement activé.

Un compte OIDC est lié uniquement par la paire émetteur/sujet vérifiée. Repovio ne lie jamais une connexion OIDC à un compte local par adresse e-mail ou nom d'utilisateur. Les noms et prénoms sont synchronisés à partir des revendications vérifiées à chaque connexion réussie ; le nom de connexion, les noms de profil et le mot de passe ne peuvent pas être modifiés localement. Les adhésions au référentiel restent gérées dans Repovio et ne sont jamais dérivées de groupes de fournisseurs d'identité.

Les modifications de configuration liées à la sécurité ou les changements de rôle invalident les jetons bearer OIDC existants. Modifier uniquement le nom affiché du fournisseur ne les invalide pas. Désactiver ou supprimer un groupe du fournisseur d’identité empêche le compte concerné d’obtenir une nouvelle session et invalide ses sessions précédentes après la prochaine tentative de connexion refusée.

Exemples de fournisseurs

Pour Authentik, créez un fournisseur OAuth2/OpenID avec le flux de code d'autorisation, l'URL de rappel exacte ci-dessus et les étendues openid, profile et email. Ajoutez un mappage de portée qui renvoie la revendication de groupe choisie sous la forme d'un tableau de noms de groupe, attachez le fournisseur à une application, puis copiez l'émetteur, l'ID client et le secret client de l'application dans Repovio.

Pour un autre fournisseur conforme aux normes, activez le flux de code d'autorisation, exigez S256 PKCE, enregistrez l'URL de rappel exacte et incluez un sub stable ainsi que la revendication de groupe configurée dans le jeton d'ID ou la réponse UserInfo. Repovio accepte uniquement les signatures de jetons d'identification asymétriques et rejette les jetons non signés et signés HMAC.

Contrat API OIDC

MéthodeCheminAccèsObjectif
GET/api/v1/auth/oidc/statusPubliqueRenvoie uniquement la disponibilité effective et le nom du fournisseur facultatif.
GET/api/v1/auth/oidc/startPubliqueDémarre un code d’autorisation lié au navigateur et une transaction S256 PKCE.
GET/api/v1/auth/oidc/callbackPubliqueValide la réponse du fournisseur et redirige avec un code de fragment unique.
POST/api/v1/auth/oidc/exchangePubliqueConsomme le code du fragment une fois et renvoie le support normal AuthResult.
GET, PUT/api/v1/auth/oidc/configAdministrateur systèmeLit ou met à jour les paramètres OIDC sécurisés par les secrets.
POST/api/v1/auth/oidc/checkAdministrateur systèmeVérifie la configuration de découverte enregistrée sans la modifier.

Le rappel ne place jamais de support JWT dans une URL. Son code d'échange opaque expire au bout de 60 secondes et ne peut être utilisé qu'une seule fois. Les erreurs du fournisseur sont réduites à des codes d'erreur stables avant d'atteindre le navigateur ou les journaux.

Changez votre mot de passe

Une fois connecté, ouvrez Paramètres → Général → Modifier le mot de passe. Saisissez le mot de passe actuel, le nouveau mot de passe et sa confirmation. Repovio maintient le navigateur actuel connecté avec un jeton d'accès de remplacement et invalide les jetons détenus par toutes les autres sessions de connexion.

Réinitialiser un mot de passe oublié

Repovio n'a délibérément pas de réinitialisation de mot de passe par courrier électronique. Un administrateur de déploiement peut réinitialiser un compte local à partir du répertoire contenant compose.yml. Lisez le mot de passe de remplacement sans lui faire écho ni le stocker dans l'historique du shell, puis envoyez-le au conteneur API via l'entrée standard :

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

Remplacez USERNAME par le nom d'utilisateur de connexion exact. La commande nécessite un mot de passe compris entre 12 et 256 caractères, met à jour uniquement ce compte local et invalide tous ses jetons d'accès existants. Connectez-vous ensuite à nouveau avec le nouveau mot de passe. La commande rejette les comptes gérés par OIDC car ils n'ont pas de mot de passe local.

Groupes d’accès locaux

Dans Accès des groupes du dépôt, attribuez Viewer ou Manager, modifiez ou retirez le rôle. Les droits directs et hérités se combinent ; Manager prévaut. La gestion nécessite toujours le rôle global Manager ; les administrateurs restent sans restriction. Le retrait agit à la requête suivante sauf autre droit conservé. Les groupes locaux acceptent les comptes locaux et OIDC, sans synchronisation des claims OIDC.

Groupes d’accès locaux