diff --git a/Dockerfile.keycloak b/Dockerfile.keycloak index 80a011a2ef6cde5d091be71fd0ddeba4baed4a2b..a38eb1e34d7713cc402ed5c9a203b1cc3c6c817f 100644 --- a/Dockerfile.keycloak +++ b/Dockerfile.keycloak @@ -1,7 +1,8 @@ -FROM quay.io/keycloak/keycloak:25.0.5 +FROM quay.io/keycloak/keycloak:26.1.0 # Utiliser le makefile, mettre à jour la version à la main -COPY keycloak-franceconnect-6.2.0.jar /opt/keycloak/providers/keycloak-franceconnect-6.2.0.jar +COPY keycloak-franceconnect-7.0.0.jar /opt/keycloak/providers/keycloak-franceconnect-7.0.0.jar +COPY keycloak-theme-for-kc-26-and-above.jar /opt/keycloak/providers/keycloak-theme-for-kc-26-and-above.jar COPY keycloak-bcrypt-1.6.0.jar /opt/keycloak/providers/keycloak-bcrypt-1.6.0.jar COPY keycloak_theme/ /opt/keycloak/themes/camino/ diff --git a/Makefile b/Makefile index 4ab62574790c3f010b8d4393aaa038e770a6f9f9..34f43ef80e92259d4ccfa1082eb1034c69a61bb6 100644 --- a/Makefile +++ b/Makefile @@ -274,10 +274,10 @@ endif # TODO 2024-10-21 une fois tout migré sur ecoCompose, il faudra supprimer tout ce qu'il y a dans infra sauf le dossier ecocompose keycloak/build: - docker build -t caminofr/camino-keycloak:25.0.5 -f Dockerfile.keycloak infra/ecocompose/keycloak/ + docker build -t caminofr/camino-keycloak:26.1.0 -f Dockerfile.keycloak infra/ecocompose/keycloak/ keycloak/push: - docker push caminofr/camino-keycloak:25.0.5 + docker push caminofr/camino-keycloak:26.1.0 nginx-proxy/build: docker build -t caminofr/camino-nginx-proxy:1.6.1 -f Dockerfile.nginx-proxy infra/ecocompose/nginx-proxy/ diff --git a/docker-compose.local.yml b/docker-compose.local.yml index 2246913decfc1f5095974ec3e0abdd6701aeb083..b9807f3ce022bb9177c8e11bdbe91f1fc5e31820 100644 --- a/docker-compose.local.yml +++ b/docker-compose.local.yml @@ -43,7 +43,7 @@ services: - ${UI_PORT}:${UI_PORT} oauth2: container_name: camino_oauth2 - image: quay.io/oauth2-proxy/oauth2-proxy:v7.6.0 + image: quay.io/oauth2-proxy/oauth2-proxy:v7.8.1 environment: OAUTH2_PROXY_PROVIDER: 'keycloak-oidc' OAUTH2_PROXY_CLIENT_ID: ${KEYCLOAK_CLIENT_ID} @@ -79,7 +79,7 @@ services: - ${OAUTH_PORT}:${OAUTH_PORT} keycloak: container_name: camino_keycloak - image: quay.io/keycloak/keycloak:25.0.5 + image: quay.io/keycloak/keycloak:26.1.0 depends_on: - db environment: @@ -89,7 +89,8 @@ services: KC_DB_PASSWORD: "${PGPASSWORD}" KC_DB_USERNAME: "${PGUSER}" volumes: - - $PWD/infra/roles/camino/files/keycloak-franceconnect-6.2.0.jar:/opt/keycloak/providers/keycloak-franceconnect-6.2.0.jar + - $PWD/infra/roles/camino/files/keycloak-franceconnect-7.0.0.jar:/opt/keycloak/providers/keycloak-franceconnect-7.0.0.jar + - $PWD/infra/roles/camino/files/keycloak-theme-for-kc-26-and-above.jar:/opt/keycloak/providers/keycloak-theme-for-kc-26-and-above.jar - $PWD/infra/roles/camino/files/keycloak-bcrypt-1.6.0.jar:/opt/keycloak/providers/keycloak-bcrypt-1.6.0.jar - $PWD/infra/roles/camino/files/keycloak_theme/:/opt/keycloak/themes/camino/ command: diff --git a/docker-compose.yml b/docker-compose.yml index 73e0496a120f859af75d4689ed491f159fdd2373..6b5ea0b68fb2ee45d13ad3d7c5ff5be629c522a4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -85,7 +85,7 @@ services: - /var/run/docker.sock:/var/run/docker.sock:ro oauth2: container_name: camino_oauth2 - image: quay.io/oauth2-proxy/oauth2-proxy:v7.6.0 + image: quay.io/oauth2-proxy/oauth2-proxy:v7.8.1 depends_on: - ui - keycloak @@ -123,7 +123,7 @@ services: - nginx-proxy keycloak: container_name: camino_keycloak - image: caminofr/camino-keycloak:25.0.5 + image: caminofr/camino-keycloak:26.1.0 depends_on: - db environment: diff --git a/docs-sources/docs/04-deploiement/06-keycloak.md b/docs-sources/docs/04-deploiement/06-keycloak.md new file mode 100644 index 0000000000000000000000000000000000000000..cde1d90b2d28e2bcbcf4f7ecfad8f63adc88f755 --- /dev/null +++ b/docs-sources/docs/04-deploiement/06-keycloak.md @@ -0,0 +1,33 @@ +## Intégration avec ProConnect + +Nous utilisons la version 26 de keycloak, avec le provider [keycloak-franceconnect](https://github.com/InseeFr/Keycloak-FranceConnect) et le thème [DSFR](https://github.com/codegouvfr/keycloak-theme-dsfr) + + +Ceci est un mini tutoriel pour configurer proconnect et réussir à récupérer le numéro de siret dans le token, afin d'associer des utilisateurs automatiquement à des entreprises. + +Dans l'administration de Keycloak, dans le realm Camino + +- Ajouter le provider 'Agent connect' (il devrait être renommé ProConnect un jour) +- alias 'proconnect' +- display name 'ProConnect' +- client id 'le clientid généré par la démarche simplifiée' +- client secret 'le client secret généré par la démarche simplifiée +- environnement AgentConnect 'INTEGRATION_INTERNET' (pour les tests, PRODUCTION_INTERNET pour la prod) + +Une fois sauvegardé, de nouvelles options apparaissent. + +Pour les scopes, on a mis 'openid profile email siret' + +On coche 'trust email' + +Pour le First login flow override, on a notre propre flow qui s'appelle 'CaminoIdentityProviderFlow' + +Dans les mapper, on ajoute un attribute importer siret, il faut mettre siret partout en gros... + + +Ensuite il faut aller dans le client (par exemple 'camino-local' pour le développement) +Dans l'onglet Settings, modifier Login theme à "DSFR" +Dans l'onglet client scopes, il faut modifier le 'camino-local-dedicated' +Il faut ajouter un mapper de type "user attribute" (pareil, on met siret partout...) + +Et voilà \o/ diff --git a/docs-sources/mkdocs.yml b/docs-sources/mkdocs.yml index 4b2f4d87e8c08902734acccfcc93b81f82ab13a4..758ad4be66ecd5da773ac3d0d412f65bad317e3c 100644 --- a/docs-sources/mkdocs.yml +++ b/docs-sources/mkdocs.yml @@ -20,4 +20,5 @@ nav: - 'Base de données': '04-deploiement/03-base-de-donnees.md' - Fichiers: '04-deploiement/04-fichiers.md' - Scripts: '04-deploiement/05-utils.md' + - Keycloak: '04-deploiement/06-keycloak.md' - Storybook: '/storybook' diff --git a/infra/ecocompose/keycloak/keycloak-franceconnect-6.2.0.jar b/infra/ecocompose/keycloak/keycloak-franceconnect-7.0.0.jar similarity index 64% rename from infra/ecocompose/keycloak/keycloak-franceconnect-6.2.0.jar rename to infra/ecocompose/keycloak/keycloak-franceconnect-7.0.0.jar index 6380648ee7ed63acc7d77c9f7f8e043a2ac0dac6..e2aecb9d690d78043d672e0f6e952622e8fb8ddc 100644 Binary files a/infra/ecocompose/keycloak/keycloak-franceconnect-6.2.0.jar and b/infra/ecocompose/keycloak/keycloak-franceconnect-7.0.0.jar differ diff --git a/infra/ecocompose/keycloak/keycloak-theme-for-kc-26-and-above.jar b/infra/ecocompose/keycloak/keycloak-theme-for-kc-26-and-above.jar new file mode 100644 index 0000000000000000000000000000000000000000..365c4659101e0889c955e254b7000b8a17d09ed8 Binary files /dev/null and b/infra/ecocompose/keycloak/keycloak-theme-for-kc-26-and-above.jar differ diff --git a/infra/roles/camino/files/keycloak-franceconnect-6.2.0.jar b/infra/roles/camino/files/keycloak-franceconnect-7.0.0.jar similarity index 64% rename from infra/roles/camino/files/keycloak-franceconnect-6.2.0.jar rename to infra/roles/camino/files/keycloak-franceconnect-7.0.0.jar index 6380648ee7ed63acc7d77c9f7f8e043a2ac0dac6..e2aecb9d690d78043d672e0f6e952622e8fb8ddc 100644 Binary files a/infra/roles/camino/files/keycloak-franceconnect-6.2.0.jar and b/infra/roles/camino/files/keycloak-franceconnect-7.0.0.jar differ diff --git a/infra/roles/camino/files/keycloak-theme-for-kc-26-and-above.jar b/infra/roles/camino/files/keycloak-theme-for-kc-26-and-above.jar new file mode 100644 index 0000000000000000000000000000000000000000..365c4659101e0889c955e254b7000b8a17d09ed8 Binary files /dev/null and b/infra/roles/camino/files/keycloak-theme-for-kc-26-and-above.jar differ diff --git a/infra/roles/camino/tasks/main.yml b/infra/roles/camino/tasks/main.yml index 3ebe219e418eb5f54168b4b7ec7ff0ffae475d88..1778241b088c0067b293056d71bae43e3c70b23c 100644 --- a/infra/roles/camino/tasks/main.yml +++ b/infra/roles/camino/tasks/main.yml @@ -47,10 +47,23 @@ owner: camino group: users become: True +- name: Supprime l'ancien jar keycloak france connect + ansible.builtin.file: + path: /srv/www/camino/keycloak-franceconnect-6.2.0.jar + state: absent + become: True +- name: Installe le jar keycloak dsfr + ansible.builtin.copy: + src: keycloak-theme-for-kc-26-and-above.jar + dest: /srv/www/camino/keycloak-theme-for-kc-26-and-above.jar + mode: u=rwx,g=rw,o=r + owner: camino + group: users + become: True - name: Installe le jar keycloak france connect ansible.builtin.copy: - src: keycloak-franceconnect-6.2.0.jar - dest: /srv/www/camino/keycloak-franceconnect-6.2.0.jar + src: keycloak-franceconnect-7.0.0.jar + dest: /srv/www/camino/keycloak-franceconnect-7.0.0.jar mode: u=rwx,g=rw,o=r owner: camino group: users