Ciao a tutti,
stavo cercando di aggiornare automaticamente le assegnazioni di gruppo se cambiano sul lato IDP. Sfortunatamente funziona solo se l’utente effettua il logout e poi di nuovo l’accesso, poiché le asserzioni vengono trasmesse solo durante un accesso, per quanto ho capito.
Obiettivo:
Quello che vorrei ottenere è che discourse (o il plugin discourse-saml) consideri l’opzione “Assertion Lifespan” e rivaluti le asserzioni come necessario/configurato dall’IDP.
Configurazione:
La mia configurazione è la seguente e funziona al momento.
Sto usando Keycloak come IDP che è collegato a LDAP da cui estrae le assegnazioni di gruppo.
Discourse è in esecuzione con le seguenti impostazioni
DISCOURSE_SAML_TARGET_URL: https://auth.example.com/realms/example/protocol/saml
DISCOURSE_SAML_SYNC_GROUPS: true
DISCOURSE_SAML_GROUPS_FULLSYNC: true
DISCOURSE_SAML_GROUPS_LDAP_LEAFCN: true
Già provato
Ho già provato a cambiare i gruppi e a disconnettere l’utente per poi farlo accedere di nuovo. Questo funziona manualmente con il risultato desiderato.
Tuttavia, l’attivazione dell’opzione “Assertion Lifespan” in Keycloak (vedi sotto) non sembra cambiare l’assegnazione di gruppo dell’utente dopo che il gruppo è stato aggiunto/rimosso per l’utente in Keycloak/Ldap.
Ho ripetuto questo processo un paio di volte e ho atteso mezz’ora ogni volta che ho cambiato l’assegnazione del gruppo all’utente.
L’unica volta che la nuova modifica del gruppo è stata applicata è stata quando l’utente si è effettivamente disconnesso e poi ha effettuato nuovamente l’accesso.
Ipotesi:
Presumo che il plugin discourse-saml (GitHub - discourse/discourse-saml: Support for SAML in Discourse) non ricontrolli l’asserzione dopo che l’utente ha effettuato l’accesso.
Sarebbe possibile implementare questa funzionalità per il plugin saml?
Grazie mille
Bao Le
