From 4563b2b640d456e541524c29886b5b050e0222a8 Mon Sep 17 00:00:00 2001 From: Nicolas Margulies 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 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 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 ------------------------------------