Le dernier `porte_par: liste-uid` du catalogue. `roles.ini` porte desormais `groups = "sysadmin"` ; `serveur_icingaweb2_admins` devient un repli de depannage, VIDE par defaut. Le mode SSO complique le montage : les membres d'un `groupOfNames` sont des DN, alors que `REMOTE_USER` est une chaine. Un backend LDAP supplementaire est declare — jamais utilise pour authentifier — uniquement pour que `groups.ini` resolve le nom vers son DN. Sans ce pont, l'habilitation par groupe est impossible en SSO. NON PROUVE : la resolution REMOTE_USER -> DN -> appartenance est interne a Icinga Web 2 ; seule une connexion reelle par le SSO la confirmera. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
25 lines
1.1 KiB
Django/Jinja
25 lines
1.1 KiB
Django/Jinja
; Géré par Set-OPS (rôle serveur_icingaweb2). Ne pas éditer à la main.
|
|
{% if serveur_icingaweb2_auth == 'external' %}
|
|
; SSO : l'utilisateur est fourni par la passerelle (oauth2-proxy → Keycloak) via REMOTE_USER.
|
|
[icingaweb2]
|
|
backend = "external"
|
|
|
|
; Backend LDAP declare mais JAMAIS utilise pour authentifier : l'externe repond en
|
|
; premier. Il sert au backend de GROUPES, qui doit resoudre un nom d'utilisateur vers
|
|
; son DN — les membres d'un `groupOfNames` sont des DN, pas des uid.
|
|
; Sans lui, l'habilitation par groupe est impossible en mode SSO, et il faudrait
|
|
; nommer des personnes (ce que D-66 interdit).
|
|
[ldap-annuaire]
|
|
backend = "ldap"
|
|
resource = "icingaweb_ldap"
|
|
user_class = "{{ serveur_icingaweb2_ldap_user_class }}"
|
|
user_name_attribute = "{{ serveur_icingaweb2_ldap_user_attr }}"
|
|
base_dn = "{{ serveur_icingaweb2_ldap_users_dn }}"
|
|
{% else %}
|
|
[icingaweb2]
|
|
backend = "ldap"
|
|
resource = "icingaweb_ldap"
|
|
user_class = "{{ serveur_icingaweb2_ldap_user_class }}"
|
|
user_name_attribute = "{{ serveur_icingaweb2_ldap_user_attr }}"
|
|
base_dn = "{{ serveur_icingaweb2_ldap_users_dn }}"
|
|
{% endif %}
|