Guides pratiques

Une application Rails pour l'administration : DSFR, ProConnect et les gems de beta.gouv.fr

Guides pratiques · · Publié le 2026-11-10

Un tampon encreur à manche en bois posé sur un encreur bleu ouvert, à côté d'un flacon d'encre à tampon, sur une table en bois
Le tampon, l'encreur et le flacon : les outils de l'administration ont changé de forme. Photo : 5snake5, Wikimedia Commons, CC0.

Une bonne partie des services publics numériques français écrits en Ruby on Rails sortent du réseau beta.gouv.fr. Ses équipes ont publié des gems pour deux besoins que toute application de l'administration rencontre : afficher l'interface officielle de l'État et connecter les agents avec leur compte professionnel. Voici ce qu'elles font, ce qu'elles ne font pas encore, et à qui elles sont destinées.

Le Système de design de l'État, et qui peut l'utiliser

Le Système de design de l'État, ou DSFR, est l'ensemble de composants HTML, CSS et JavaScript qui donne leur apparence commune aux sites publics : en-tête avec le bloc-marque, typographie Marianne, boutons, formulaires, pied de page. Il est développé et maintenu par le Service d'information du Gouvernement (SIG).

Avant d'écrire une ligne de code, il faut lire ses conditions d'utilisation, résumées dans le dépôt officiel du DSFR. Le code est publié sous licence Etalab 2.0, à l'exception de certains éléments comme les fontes Marianne, mais son usage est encadré par des modalités d'utilisation. Le DSFR étant un marqueur de l'identité visuelle de l'État, il ne doit pas être utilisé par des entités extérieures à l'administration, et son emploi est limité en dehors des noms de domaine en .gouv.fr. Même pour une administration, l'utilisation est soumise à une demande d'agrément (articles 46 à 50 des modalités). Le dépôt précise aussi qu'en cas d'usage trompeur ou frauduleux, l'État se réserve le droit d'agir.

Concrètement, une entreprise qui développe une application pour son propre compte ne peut pas reprendre le DSFR pour « faire officiel ». En revanche, un prestataire qui développe un service pour une administration, sur un domaine de cette administration et avec son accord, travaille dans le cadre prévu. En cas de doute, la question se pose au commanditaire public avant le premier écran.

Les gems DSFR pour Rails

Trois gems, toutes publiées sous licence MIT par beta.gouv.fr, se partagent le travail. Les versions indiquées sont celles de RubyGems.org au 10 novembre 2026.

GemRôleVersion
dsfr-assetsEmbarque les fichiers statiques du DSFR (CSS, JavaScript, polices, icônes) pour les servir depuis l'application1.15.4 (22 octobre 2026)
dsfr-view-componentsComposants d'interface du DSFR sous forme de ViewComponent : alertes, badges, cartes, onglets, fil d'Ariane, en-tête, fenêtres modales…5.1.0 (2 octobre 2026)
dsfr-form_builderConstructeur de formulaires produisant le balisage DSFR des champs, libellés et messages d'erreur0.0.15 (28 octobre 2026)

dsfr-view-components est un fork de govuk-components, l'équivalent britannique pour le GOV.UK Design System. Sa documentation indique qu'elle fonctionne avec Ruby 3.4 ou plus récent et Rails 8 ou plus récent : une application restée sur Rails 7 devra monter de version avant de l'adopter, ou se contenter de dsfr-assets et d'écrire le balisage à la main. Elle s'appuie sur la gem view_component, que l'application doit accepter comme dépendance.

Les formulaires sont volontairement exclus de dsfr-view-components. C'est le rôle de dsfr-form_builder, dont le numéro de version (0.0.x) signale qu'il est encore jeune : relisez son journal des modifications à chaque mise à jour et testez vos formulaires, en particulier l'affichage des erreurs de validation et l'association des messages aux champs, qui comptent pour l'accessibilité.

Ces gems ne sont pas réservées aux grands services. Dans notre analyse de 33 applications Rails du secteur public, dsfr-view-components apparaît dans 10 applications, toutes sur Rails 7 ou plus récent.

Connecter les agents avec ProConnect

ProConnect est présenté par l'État comme la solution officielle d'identification des professionnels du public et du privé : un seul bouton pour se connecter à de nombreux services avec son compte professionnel, l'utilisateur étant rattaché au numéro SIRET de son organisation. Techniquement, c'est un fournisseur OpenID Connect. Les applications s'inscrivent et se configurent sur l'espace partenaires ProConnect, qui héberge aussi la documentation technique.

Pour Rails, beta.gouv.fr publie omniauth-proconnect (version 0.6.2 du 29 septembre 2026), une stratégie OmniAuth. Son README explique pourquoi elle existe à côté de la gem générique omniauth_openid_connect : ProConnect renvoie les informations de l'utilisateur (/userinfo) sous forme de jeton JWT, et impose le paramètre id_token_hint dans l'adresse de déconnexion, alors que la spécification le rend facultatif. Le README juge aussi la gem générique peu maintenue ; sur RubyGems.org, sa dernière version, la 0.8.0, date du 4 juillet 2024.

Quelques points d'attention, tirés de la documentation de la gem :

# config/initializers/omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
  provider :proconnect,
    client_id: ENV.fetch("PC_CLIENT_ID"),
    client_secret: ENV.fetch("PC_CLIENT_SECRET"),
    proconnect_domain: ENV.fetch("PC_DOMAIN"), # se termine par /api/v2
    redirect_uri: ENV.fetch("PC_REDIRECT_URI"),
    post_logout_redirect_uri: ENV.fetch("PC_POST_LOGOUT_REDIRECT_URI"),
    scope: ENV.fetch("PC_SCOPES")
end

Pour l'affichage, dsfr-view-components fournit un composant de bouton aux couleurs de ProConnect (DsfrComponent::ProconnectButtonComponent), qui envoie justement un formulaire en POST vers la cible indiquée.

ProConnect ne remplace pas toujours un compte local. Une application peut le combiner avec Devise, sur lequel OmniAuth se branche, ou avec une authentification maison, pour les usagers qui n'ont pas de compte professionnel ; c'est le cas d'une des six applications de notre analyse qui utilisent ProConnect. Si vous gardez des mots de passe, appliquez la recommandation de la CNIL ; si vous stockez le profil renvoyé par ProConnect, prévoyez sa durée de conservation et sa suppression, comme expliqué dans notre article sur le RGPD et l'effacement des données.

Le reste de la pile

En dehors de ces gems propres à l'administration, les applications publiques ressemblent aux autres applications Rails : PostgreSQL, Puma, RSpec et FactoryBot pour les tests, Pundit pour les autorisations, Sentry pour le suivi des erreurs, Brakeman pour l'analyse statique de sécurité. Notre guide des gems d'autorisation (en anglais) compare Pundit à ses concurrents.

Deux habitudes méritent d'être reprises même hors de l'administration : publier le code, ce que font les équipes de beta.gouv.fr par défaut, et tenir Rails à jour. Sur ce second point, notre analyse montre de grands écarts : quelques équipes appliquent une version de sécurité en quelques jours, tandis que d'autres dépôts publics restent sur des séries qui ne reçoivent plus de correctifs depuis des années.

À retenir

Article mis à jour le 10 novembre 2026. Gemfile Review n'a aucun lien avec le SIG, la DINUM, ProConnect ou beta.gouv.fr ; les conditions d'utilisation et les procédures d'inscription peuvent changer, reportez-vous aux pages officielles.