Set-OPS-Public/roles/serveur_keycloak/tasks/journalisation.yml
Daniel Allaire 44ee6d4d36 keycloak : URI de retour apres deconnexion, derivees de web_origins
Nextcloud se connectait et echouait a la deconnexion — « invalid redirect
uri ». Keycloak valide ces URI SEPAREMENT des URI de rappel, et aucun des
quatre clients ne declarait l'attribut ; Nextcloud etait seulement le seul a
en envoyer une.

post.logout.redirect.uris derivee de web_origins, qui porte deja l'URL de base
du service. Posee par l'API : attributes est une map, et kcadm -s sur une map
accepte sans ecrire (meme leçon que smtpServer ce matin). Relu apres ecriture.

Le second passage a revele un defaut de l'heure precedente : la tache de
journalisation se declarait changed a chaque deploiement — Jinja rendait True
et 1209600 en CHAINES, la comparaison au reel ne pouvait aboutir. Compose en
une seule expression, types natifs. Deux passages a changed=0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 11:24:02 -04:00

44 lines
2.1 KiB
YAML

---
# Journal des evenements du realm. Sans lui, Keycloak ne garde AUCUNE trace des
# connexions : ni qui est entre, ni pourquoi une authentification a echoue. Constate
# le 2026-08-08 en cherchant a diagnostiquer deux services qui n'aboutissaient pas —
# tout etait correct cote serveur, et il n'existait aucun moyen de savoir ce que
# l'utilisateur avait rencontre.
#
# C'est aussi une exigence d'exploitation : « un sysadmin l'exploite sans IA » suppose
# qu'il puisse lire lui-meme ce qui s'est passe.
- name: Lire la configuration du journal
ansible.builtin.uri:
url: "http://localhost:8080/admin/realms/{{ serveur_keycloak_realm }}/events/config"
headers:
Authorization: "Bearer {{ serveur_keycloak_pol_jeton.json.access_token }}"
register: serveur_keycloak_journal_actuel
no_log: true
- name: Composer la configuration attendue
# Une seule expression, pour obtenir des types NATIFS. Ecrit champ par champ, Jinja
# rendait « True » et « 1209600 » en CHAINES : la comparaison au reel (booleen, entier)
# ne pouvait jamais etre satisfaite, et la tache se declarait `changed` a chaque
# passage. Un bruit permanent finit par masquer un vrai changement.
ansible.builtin.set_fact:
serveur_keycloak_journal_attendu: >-
{{ {'eventsEnabled': serveur_keycloak_journal_actif | bool,
'eventsExpiration': serveur_keycloak_journal_retention | int,
'adminEventsEnabled': serveur_keycloak_journal_admin | bool,
'adminEventsDetailsEnabled': serveur_keycloak_journal_admin | bool} }}
- name: Activer le journal des évènements du realm
ansible.builtin.uri:
url: "http://localhost:8080/admin/realms/{{ serveur_keycloak_realm }}/events/config"
method: PUT
status_code: [204]
headers:
Authorization: "Bearer {{ serveur_keycloak_pol_jeton.json.access_token }}"
body_format: json
body: "{{ serveur_keycloak_journal_actuel.json | combine(serveur_keycloak_journal_attendu) }}"
no_log: true
changed_when: true
when: >-
(serveur_keycloak_journal_actuel.json | combine(serveur_keycloak_journal_attendu))
!= serveur_keycloak_journal_actuel.json