From 4563b2b640d456e541524c29886b5b050e0222a8 Mon Sep 17 00:00:00 2001
From: Nicolas Margulies <nicomarg@crans.org>
Date: Sat, 8 Mar 2025 16:04:25 +0100
Subject: [PATCH 1/3] Added configusation for OpenID support, along with
 installation information

---
 README.md                  | 14 +++++++++++++-
 note_kfet/settings/base.py |  4 ++++
 2 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/README.md b/README.md
index 7297a1b6..97a0760d 100644
--- a/README.md
+++ b/README.md
@@ -58,7 +58,13 @@ Bien que cela permette de créer une instance sur toutes les distributions,
     (env)$ ./manage.py createsuperuser  # Création d'un⋅e utilisateur⋅rice initial
     ```
 
-6.  Enjoy :
+6. (Optionnel) **Création d'une clé privée OpenID Connect**
+
+Pour activer le support d'OpenID Connect, il faut générer une clé privée, par
+exemple avec openssl (`openssl genrsa -out oidc.key 4096`), et renseigner son
+emplacement dans `OIDC_RSA_PRIVATE_KEY` (par défaut `/var/secrets/oidc.key`)
+
+7.  Enjoy :
 
     ```bash
     (env)$ ./manage.py runserver 0.0.0.0:8000
@@ -228,6 +234,12 @@ Sinon vous pouvez suivre les étapes décrites ci-dessous.
         (env)$ ./manage.py check # pas de bêtise qui traine
         (env)$ ./manage.py migrate
 
+7. **Création d'une clé privée OpenID Connect**
+
+Pour activer le support d'OpenID Connect, il faut générer une clé privée, par
+exemple avec openssl (`openssl genrsa -out oidc.key 4096`), et renseigner son
+emplacement dans `OIDC_RSA_PRIVATE_KEY` (par défaut `/var/secrets/oidc.key`)
+
 7.  *Enjoy \o/*
 
 ### Installation avec Docker
diff --git a/note_kfet/settings/base.py b/note_kfet/settings/base.py
index 113cf626..d982ac3a 100644
--- a/note_kfet/settings/base.py
+++ b/note_kfet/settings/base.py
@@ -268,6 +268,10 @@ OAUTH2_PROVIDER = {
     'OAUTH2_VALIDATOR_CLASS': "permission.scopes.PermissionOAuth2Validator",
     'REFRESH_TOKEN_EXPIRE_SECONDS': timedelta(days=14),
     'PKCE_REQUIRED': False, # PKCE (fix a breaking change of django-oauth-toolkit 2.0.0)
+    'OIDC_ENABLED': True,
+    'OIDC_RSA_PRIVATE_KEY':
+        os.getenv('OIDC_RSA_PRIVATE_KEY', '/var/secrets/oidc.key'),
+    'SCOPES': { 'openid': "OpenID Connect scope" },
 }
 
 # Take control on how widget templates are sourced

From 6c63c6417ca8f33afeeff718f3b7db2056dcda22 Mon Sep 17 00:00:00 2001
From: Nicolas Margulies <nicomarg@crans.org>
Date: Sat, 8 Mar 2025 16:08:40 +0100
Subject: [PATCH 2/3] Typesetting

---
 README.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/README.md b/README.md
index 97a0760d..02d589f2 100644
--- a/README.md
+++ b/README.md
@@ -62,7 +62,7 @@ Bien que cela permette de créer une instance sur toutes les distributions,
 
 Pour activer le support d'OpenID Connect, il faut générer une clé privée, par
 exemple avec openssl (`openssl genrsa -out oidc.key 4096`), et renseigner son
-emplacement dans `OIDC_RSA_PRIVATE_KEY` (par défaut `/var/secrets/oidc.key`)
+emplacement dans `OIDC_RSA_PRIVATE_KEY` (par défaut `/var/secrets/oidc.key`).
 
 7.  Enjoy :
 
@@ -238,7 +238,7 @@ Sinon vous pouvez suivre les étapes décrites ci-dessous.
 
 Pour activer le support d'OpenID Connect, il faut générer une clé privée, par
 exemple avec openssl (`openssl genrsa -out oidc.key 4096`), et renseigner son
-emplacement dans `OIDC_RSA_PRIVATE_KEY` (par défaut `/var/secrets/oidc.key`)
+emplacement dans `OIDC_RSA_PRIVATE_KEY` (par défaut `/var/secrets/oidc.key`).
 
 7.  *Enjoy \o/*
 

From 9bffb32a5e228f7c22a18feaf059140c9a32cab8 Mon Sep 17 00:00:00 2001
From: bleizi <bleizi@crans.org>
Date: Thu, 20 Mar 2025 17:36:38 +0100
Subject: [PATCH 3/3] documentation

---
 README.md                         |  2 +-
 docs/external_services/oauth2.rst | 13 +++++++++++++
 docs/install.rst                  | 16 ++++++++++++++++
 3 files changed, 30 insertions(+), 1 deletion(-)

diff --git a/README.md b/README.md
index 02d589f2..4ba19356 100644
--- a/README.md
+++ b/README.md
@@ -240,7 +240,7 @@ Pour activer le support d'OpenID Connect, il faut générer une clé privée, pa
 exemple avec openssl (`openssl genrsa -out oidc.key 4096`), et renseigner son
 emplacement dans `OIDC_RSA_PRIVATE_KEY` (par défaut `/var/secrets/oidc.key`).
 
-7.  *Enjoy \o/*
+8.  *Enjoy \o/*
 
 ### Installation avec Docker
 
diff --git a/docs/external_services/oauth2.rst b/docs/external_services/oauth2.rst
index 76dead8b..252789aa 100644
--- a/docs/external_services/oauth2.rst
+++ b/docs/external_services/oauth2.rst
@@ -43,6 +43,11 @@ On a ensuite besoin de définir nos propres scopes afin d'avoir des permissions
        'SCOPES_BACKEND_CLASS': 'permission.scopes.PermissionScopes',
        'OAUTH2_VALIDATOR_CLASS': "permission.scopes.PermissionOAuth2Validator",
        'REFRESH_TOKEN_EXPIRE_SECONDS': timedelta(days=14),
+       'PKCE_REQUIRED': False,
+       'OIDC_ENABLED': True,
+       'OIDC_RSA_PRIVATE_KEY':
+           os.getenv('OIDC_RSA_PRIVATE_KEY', '/var/secrets/oidc.key'),
+       'SCOPES': { 'openid': "OpenID Connect scope" },
    }
 
 Cela a pour effet d'avoir des scopes sous la forme ``PERMISSION_CLUB``,
@@ -57,6 +62,14 @@ On ajoute enfin les routes dans ``urls.py`` :
         path('o/', include('oauth2_provider.urls', namespace='oauth2_provider'))
     )
 
+Enfin pour utiliser OIDC, il faut générer une clé privé que l'on va, par défaut,
+mettre dans `/var/secrets/oidc.key` :
+
+.. code:: bash
+
+   cd /var/secrets/
+   openssl genrsa -out oidc.key 4096
+
 L'OAuth2 est désormais prêt à être utilisé.
 
 
diff --git a/docs/install.rst b/docs/install.rst
index 4edf3bb0..2d92be0e 100644
--- a/docs/install.rst
+++ b/docs/install.rst
@@ -227,6 +227,22 @@ En production, ce fichier contient :
    )
 
 
+Génération d'une clé privé pour OIDC
+------------------------------------
+
+Pour pouvoir proposer le service de connexion Openid Connect (OIDC) par OAuth2, il y a
+besoin d'une clé privé. Par défaut, elle est cherché dans le fichier `/var/secrets/oidc.key`
+(sinon, il faut modifier l'emplacement dans les fichiers de configurations).
+
+Pour générer la clé, il faut aller dans le dossier `/var/secrets` (à créer, si nécessaire) puis
+utiliser la commande de génération :
+
+.. code:: bash
+
+   cd /var/secrets
+   openssl genrsa -out oidc.key 4096
+
+
 Configuration des tâches récurrentes
 ------------------------------------