Gerege App¶
Production · Couche 4 — Produit vertical ·
Dépôt : gerege-app-mn · geregeapp.mn
Les services quotidiens du citoyen dans une seule application. S'identifier avec sa pièce d'identité électronique, obtenir une attestation, signer un contrat, payer, administrer son organisation — sans multiplier les applications, les mots de passe et les files d'attente.
Propriété
La plateforme est détenue et exploitée par Gerege App ХХК. Son socle
technique est open-gerege-core, le module Go partagé avec la variante de
Gerege Systems, dont elle hérite les couches d'identité, de sécurité, d'IA et
de support de service.
Le problème résolu¶
Le citoyen ouvre une application différente pour chaque service, retient un mot de passe différent et joint encore et encore les mêmes pièces. Gerege App règle ces trois points d'un coup :
| Question | Réponse |
|---|---|
| Qui se connecte ? | Authentification eID — QR / App2App / push par numéro d'état civil |
| Se reconnecter ? | Une seule fois — la plateforme est elle-même fournisseur OIDC (SSO) |
| Redemander les mêmes pièces ? | Le registre des services détecte les manquements au principe once-only |
| Où en est ma demande ? | Chronologie de la demande + suivi du SLA du relay |
Capacités principales¶
-
eID + Gerege SSO
Le seul mode de connexion est l'eID. Ni mot de passe, ni OTP par e-mail. La plateforme est en outre relying party de Gerege SSO.
-
Fournisseur OIDC à son tour
Quand
OAUTH_ISSUERest configuré, la plateforme devient son propre fournisseur d'identité — code Go maison, PKCES256,id_tokenen RS256. -
Portail de services publics
Catalogue → demande → file d'attente de l'agent → décision → attestation, paiement, rendez-vous. Machine à états séparant l'avancement du résultat, à la manière de ZGW.
-
Registre unifié des services
Passeport CPSV-AP, historique des versions, catalogue de preuves, détection des manquements au principe once-only (principe estonien).
-
Relay entre plateformes
Les demandes à échéance venues d'une plateforme supérieure sont orientées vers les organismes inférieurs, et le SLA est suivi. Le webhook est signé avec le secret propre à chaque plateforme.
-
Assistant IA (Gemini)
Chat, parole → texte, texte → parole, traduction en direct. Base de connaissances à recherche sémantique pgvector ; le chat visiteur sans connexion est isolé à part.
Également : signature électronique PAdES + sign relay, passerelle API pilotée depuis l'admin, RBAC + super admin (MFA par TOTP), organisations et affiliations, profil PKI eID, connexions Google Drive · Dropbox · Google Meet, stockage SFTP propre (Gerege Space), interface en quatre langues (mn · en · zh · ru).
Place dans l'écosystème¶
flowchart TD
EID[eID Mongolia<br/>Couche 1] --> SSO[Gerege SSO<br/>Couche 2]
SSO -->|RP OIDC| APP[Gerege App<br/>Couche 4]
SSO -->|proxy eID · sign relay| APP
CORE[(open-gerege-core<br/>Couche 3)] -.module socle.-> APP
- Aucun accès direct à l'eID. Les services eID autorisés transitent par le
proxy eID du SSO (
/rp/eid,/rp/eid-org) et par le sign relay (/rp/sign). - Le client secret est dans le SSO. Le client
gerege-app-mnest enregistré sursso.gerege.mn; son secret n'y vit que sous forme de hachage. - Le socle est partagé. Le backend est l'implémentation de référence de
open-gerege-core(main.go, une trentaine de lignes), sans routes ajoutées en propre. Les correctifs de sécurité se diffusent depuis un point unique.
Technologie¶
| Couche | Choix |
|---|---|
| Backend | Go 1.26 · chi (net/http) · pgx (sans ORM, SQL écrit à la main) |
| Données | PostgreSQL 16 + pgvector · Redis 7 |
| Frontend | Next.js 15 (BFF) · TanStack Query |
| IA | Gemini REST (sans SDK) — chat · STT · TTS · traduction |
| Observabilité | OpenTelemetry · Prometheus · Zap |
| Déploiement | Docker Compose + edge nginx, geregeapp.mn |
Pour le détail, voir Stack technique.
Socle de sécurité¶
- Row-Level Security de Postgres — l'API se connecte avec un rôle qui n'est
pas superuser ; un garde-fou vérifie cette condition au démarrage. Les
tables
gov_*disposent d'une policy distincte pour les agents. - Modèle BFF — le jeton reste dans un cookie httpOnly et n'atteint jamais le JavaScript du navigateur ; double protection CSRF (en-tête dédié + origine).
- Fonctions fail-closed — sans identifiants, la capacité s'éteint plutôt que de fonctionner à faux ; si le garde-fou de démarrage détecte une infraction, l'API refuse de démarrer.
- Audit chaîné par hachage —
/api/v1/audit/verifycontrôle l'intégrité de la chaîne.
Pour les exigences communes de l'écosystème, voir Sécurité.
Documentation détaillée¶
La documentation complète au niveau de l'implémentation — matrice des capacités, référence des endpoints, runbook de déploiement — se trouve sur un site distinct :
| Page | De quoi il s'agit |
|---|---|
| Matrice des capacités | Chaque module, ses droits et ses pages d'interface d'un coup d'œil |
| Services publics | Le cycle complet d'une demande, la file d'attente de l'agent |
| Registre des services | Passeport CPSV-AP, manquements au once-only |
| Raccorder une application (RP OIDC) | Les étapes pour authentifier votre propre application |
| Référence d'API | Tous les endpoints dans un seul tableau |
| Déploiement | Compose, variables d'environnement, nginx, rollback |