Aller au contenu

Protéger la doc MkDocs avec Keycloak (même config que le frontend)

MkDocs génère un site statique : il ne gère pas OAuth2 lui-même. Pour protéger la documentation avec la même config Keycloak que le frontend Angular, on place un proxy d'authentification devant le site. On garde le même client (admin-angular), le même realm (minsante) : mêmes utilisateurs, mêmes identifiants, SSO possible.

Config Keycloak (identique au frontend)

Paramètre Valeur (prod)
URL Keycloak https://authentification.minsante.bf
Realm minsante
Client admin-angular
Redirect URI app https://garde.minsante.bf/dashboard
Post-logout https://garde.minsante.bf

Modification à faire dans Keycloak

  1. Ouvrir le client admin-angular du realm minsante.
  2. Ajouter une Valid Redirect URI pour la doc : https://faq.garde.minsante.bf/* (et l’URL de callback du proxy, ex. https://faq.garde.minsante.bf/oauth2/callback).
  3. Si le proxy utilise un client secret : s'assurer qu'un secret existe pour admin-angular (Credentials) et l'utiliser dans oauth2-proxy.

Aucune autre modification de config Keycloak : même realm, même client.


Configuration oauth2-proxy (Keycloak OIDC)

Variables d'environnement ou fichier de config pour oauth2-proxy :

# Même config que le frontend
OIDC_ISSUER_URL="https://authentification.minsante.bf/realms/minsante"
OIDC_JWKS_URL="https://authentification.minsante.bf/realms/minsante/protocol/openid-connect/certs"

OIDC_CLIENT_ID="admin-angular"
OIDC_CLIENT_SECRET="<secret du client admin-angular>"

OAUTH2_PROXY_REDIRECT_URL="https://faq.garde.minsante.bf/oauth2/callback"
OAUTH2_PROXY_COOKIE_DOMAIN=".garde.minsante.bf"   # optionnel, pour partager le cookie avec l'app

Exemple de nginx devant MkDocs + oauth2-proxy :

location / {
    auth_request /oauth2/auth;
    error_page 401 = /oauth2/sign_in;
    alias /var/www/docs/;
}

location /oauth2/ {
    proxy_pass http://127.0.0.1:4180;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Scheme $scheme;
}

Résumé

Élément Config
Realm minsante (identique au frontend).
Client admin-angular (identique au frontend).
Modification Ajouter dans Keycloak la Valid Redirect URI du site docs (callback du proxy).
Où ça se passe Dans l'infra (proxy / oauth2-proxy), pas dans MkDocs.

On garde donc exactement la même config Keycloak que le frontend ; seule l'ajout d'une redirect URI pour la doc est nécessaire.