From 57d607ddac7f03c0384601251afd37ceaab1cc62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Dufaure?= Date: Mon, 16 Sep 2024 17:02:49 +0200 Subject: [PATCH] [ENH] Redefinition of environments MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Clément Dufaure --- README.en.md | 13 +++++ README.md | 15 ++++++ pom.xml | 2 +- .../franceconnect/FCEnvironment.java | 13 +++-- src/main/resources/france-connect.properties | 54 +++++++++++++------ 5 files changed, 78 insertions(+), 19 deletions(-) diff --git a/README.en.md b/README.en.md index 476a68b..2ca7018 100644 --- a/README.en.md +++ b/README.en.md @@ -57,6 +57,19 @@ $ mvn clean install wildfly:deploy ## How to use it +### Environments + +Up until version 6.2.0, the extension provided the so-called V1 and V2 environments, which correspond respectively to the historical FranceConnect "standard" and the FranceConnect Plus. + +With the addition of the FranceConnect standard V2 and to clear up any ambiguities, the configurations are now named `STANDARD_V2` and `PLUS_V2`, while the previous ones will remain available for a few versions to allow for migration. Since the standard V1 offering will be discontinued in 2025, it will not be included in the new naming conventions. + +Each offering is available in both INTEGRATION and PRODUCTION, resulting in the following: + +- `INTEGRATION_V1` and `PRODUCTION_V1` : Historical FranceConnect standard "V1", which will be discontinued in 2025 +- `INTEGRATION_V2` and `PRODUCTION_V2` : FranceConnect Plus under its old naming, maintained for backward compatibility +- `INTEGRATION_STANDARD_V2` and `PRODUCTION_STANDARD_V2` : FranceConnect standard V2 +- `INTEGRATION_PLUS_V2` and `PRODUCTION_PLUS_V2` : FranceConnect Plus + ### Requirements You must have a [France Connect account](https://franceconnect.gouv.fr/partenaires) to retrieve plugin configuration information (clientId, clientSecret, authorized redirect uri, ...) diff --git a/README.md b/README.md index 7f8d889..3365617 100644 --- a/README.md +++ b/README.md @@ -72,6 +72,21 @@ $ mvn clean install wildfly:deploy ## Utilisation ### France Connect + +#### Environnements + +Jusqu'en version 6.2.0, l'extension propose les environnement dits `V1` et `V2` qui correspondent réellement respectivement à l'offre FranceConnect standard "historique" et à l'offre FranceConnect Plus. + +Suite à l'ajout de l'offre FranceConnect standard V2 et afin de lever les ambiguités, les configurations se nomment désormais `STANDARD_V2` et `PLUS_V2`, les anciens restant pendant quelques versions le temps d'effectuer la migration. +L'offre standard V1 devant s'arrêter en 2025, elle ne sera pas reprise dans les nouveaux nommages. + +Chaque offre est proposée en `INTEGRATION` et en `PRODUCTION`, ce qui donne donc : + +- `INTEGRATION_V1` et `PRODUCTION_V1` : Offre historique FranceConnect standard "V1" devant s'arrêter en 2025 +- `INTEGRATION_V2` et `PRODUCTION_V2` : Offre FranceConnect Plus dans son ancien nommage, maintenu pour retro compatibilité +- `INTEGRATION_STANDARD_V2` et `PRODUCTION_STANDARD_V2` : Offre FranceConnect standard V2 +- `INTEGRATION_PLUS_V2` et `PRODUCTION_PLUS_V2` : Offre FranceConnect Plus + #### Prérequis Vous devez créer un [compte France Connect](https://franceconnect.gouv.fr/partenaires) afin de récupérer les informations nécessaires à la configuration de cette extension (clientId, clientSecret, configuration de l'url de redirection autorisée, ...). diff --git a/pom.xml b/pom.xml index ed61287..c429b05 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ fr.insee.keycloak keycloak-franceconnect - 6.2.0-SNAPSHOT + 6.5.0-SNAPSHOT ${project.groupId}:${project.artifactId} France Connect Openid-Connect Provider for Keycloak diff --git a/src/main/java/fr/insee/keycloak/providers/franceconnect/FCEnvironment.java b/src/main/java/fr/insee/keycloak/providers/franceconnect/FCEnvironment.java index ec05282..0ce3c43 100644 --- a/src/main/java/fr/insee/keycloak/providers/franceconnect/FCEnvironment.java +++ b/src/main/java/fr/insee/keycloak/providers/franceconnect/FCEnvironment.java @@ -5,11 +5,18 @@ import java.util.Properties; enum FCEnvironment { - + // Legacy V1 , should stop in 2025 INTEGRATION_V1("france-connect.integration.v1"), PRODUCTION_V1("france-connect.production.v1"), - INTEGRATION_V2("france-connect.integration.v2"), - PRODUCTION_V2("france-connect.production.v2"); + // Names left for retro compatibility, prefer now "Plus" + INTEGRATION_V2("france-connect.plus.integration.v2"), + PRODUCTION_V2("france-connect.plus.production.v2"), + // FranceConnect V2, called standard in this project to differentiate with "Plus" + INTEGRATION_STANDARD_V2("france-connect.standard.integration.v2"), + PRODUCTION_STANDARD_V2("france-connect.standard.production.v2"), + // FranceConnect Plus V2 + INTEGRATION_PLUS_V2("france-connect.plus.integration.v2"), + PRODUCTION_PLUS_V2("france-connect.plus.production.v2"); static final String ENVIRONMENT_PROPERTY_NAME = "fc_environment"; private static final Properties PROPERTIES = Utils.loadProperties("france-connect.properties"); diff --git a/src/main/resources/france-connect.properties b/src/main/resources/france-connect.properties index dbd319f..3313bd3 100644 --- a/src/main/resources/france-connect.properties +++ b/src/main/resources/france-connect.properties @@ -1,3 +1,5 @@ +# FC V1 legacy + france-connect.integration.v1.authorization.url=https://fcp.integ01.dev-franceconnect.fr/api/v1/authorize france-connect.integration.v1.token.url=https://fcp.integ01.dev-franceconnect.fr/api/v1/token france-connect.integration.v1.userinfo.url=https://fcp.integ01.dev-franceconnect.fr/api/v1/userinfo @@ -8,18 +10,40 @@ france-connect.production.v1.token.url=https://app.franceconnect.gouv.fr/api/v1/ france-connect.production.v1.userinfo.url=https://app.franceconnect.gouv.fr/api/v1/userinfo france-connect.production.v1.logout.url=https://app.franceconnect.gouv.fr/api/v1/logout -france-connect.integration.v2.authorization.url=https://auth.integ01.dev-franceconnect.fr/api/v2/authorize -france-connect.integration.v2.token.url=https://auth.integ01.dev-franceconnect.fr/api/v2/token -france-connect.integration.v2.userinfo.url=https://auth.integ01.dev-franceconnect.fr/api/v2/userinfo -france-connect.integration.v2.logout.url=https://auth.integ01.dev-franceconnect.fr/api/v2/session/end -france-connect.integration.v2.issuer.url=https://auth.integ01.dev-franceconnect.fr/api/v2 -france-connect.integration.v2.jwks.url=https://auth.integ01.dev-franceconnect.fr/api/v2/jwks -france-connect.integration.v2.use.jwks.url=true - -france-connect.production.v2.authorization.url=https://auth.franceconnect.gouv.fr/api/v2/authorize -france-connect.production.v2.token.url=https://auth.franceconnect.gouv.fr/api/v2/token -france-connect.production.v2.userinfo.url=https://auth.franceconnect.gouv.fr/api/v2/userinfo -france-connect.production.v2.logout.url=https://auth.franceconnect.gouv.fr/api/v2/session/end -france-connect.production.v2.issuer.url=https://auth.franceconnect.gouv.fr/api/v2 -france-connect.production.v2.jwks.url=https://auth.franceconnect.gouv.fr/api/v2/jwks -france-connect.production.v2.use.jwks.url=true +## FC standard V2 + +# https://fcp-low.integ01.dev-franceconnect.fr/api/v2/.well-known/openid-configuration +france-connect.standard.integration.v2.authorization.url=https://fcp-low.integ01.dev-franceconnect.fr/api/v2/authorize +france-connect.standard.integration.v2.token.url=https://fcp-low.integ01.dev-franceconnect.fr/api/v2/token +france-connect.standard.integration.v2.userinfo.url=https://fcp-low.integ01.dev-franceconnect.fr/api/v2/userinfo +france-connect.standard.integration.v2.logout.url=https://fcp-low.integ01.dev-franceconnect.fr/api/v2/session/end +france-connect.standard.integration.v2.issuer.url=https://fcp-low.integ01.dev-franceconnect.fr/api/v2 +france-connect.standard.integration.v2.jwks.url=https://fcp-low.integ01.dev-franceconnect.fr/api/v2/jwks +france-connect.standard.integration.v2.use.jwks.url=true + +# https://oidc.franceconnect.gouv.fr/api/v2/.well-known/openid-configuration +france-connect.standard.production.v2.authorization.url=https://oidc.franceconnect.gouv.fr/api/v2/authorize +france-connect.standard.production.v2.token.url=https://oidc.franceconnect.gouv.fr/api/v2/token +france-connect.standard.production.v2.userinfo.url=https://oidc.franceconnect.gouv.fr/api/v2/userinfo +france-connect.standard.production.v2.logout.url=https://oidc.franceconnect.gouv.fr/api/v2/session/end +france-connect.standard.production.v2.issuer.url=https://oidc.franceconnect.gouv.fr/api/v2 +france-connect.standard.production.v2.jwks.url=https://oidc.franceconnect.gouv.fr/api/v2/jwks +france-connect.standard.production.v2.use.jwks.url=true + +## FC + V2 + +france-connect.plus.integration.v2.authorization.url=https://auth.integ01.dev-franceconnect.fr/api/v2/authorize +france-connect.plus.integration.v2.token.url=https://auth.integ01.dev-franceconnect.fr/api/v2/token +france-connect.plus.integration.v2.userinfo.url=https://auth.integ01.dev-franceconnect.fr/api/v2/userinfo +france-connect.plus.integration.v2.logout.url=https://auth.integ01.dev-franceconnect.fr/api/v2/session/end +france-connect.plus.integration.v2.issuer.url=https://auth.integ01.dev-franceconnect.fr/api/v2 +france-connect.plus.integration.v2.jwks.url=https://auth.integ01.dev-franceconnect.fr/api/v2/jwks +france-connect.plus.integration.v2.use.jwks.url=true + +france-connect.plus.production.v2.authorization.url=https://auth.franceconnect.gouv.fr/api/v2/authorize +france-connect.plus.production.v2.token.url=https://auth.franceconnect.gouv.fr/api/v2/token +france-connect.plus.production.v2.userinfo.url=https://auth.franceconnect.gouv.fr/api/v2/userinfo +france-connect.plus.production.v2.logout.url=https://auth.franceconnect.gouv.fr/api/v2/session/end +france-connect.plus.production.v2.issuer.url=https://auth.franceconnect.gouv.fr/api/v2 +france-connect.plus.production.v2.jwks.url=https://auth.franceconnect.gouv.fr/api/v2/jwks +france-connect.plus.production.v2.use.jwks.url=true