Aggiungi il supporto SCIM come provider di servizi

Come già menzionato qui penso che sarebbe una bella funzionalità se Discourse supportasse il protocollo SCIM. SCIM è uno standard proposto dall’IETF tramite RFC7644 e RFC7643 che mira a fornire una soluzione per la gestione di utenti/gruppi tramite una semplice API Rest. Il nostro caso d’uso sarebbe quello di gestire le identità degli utenti e le appartenenze ai gruppi tramite un servizio separato che agisce come client SCIM, Keycloak nel nostro caso. Discourse agirebbe come provider di servizi SCIM. Oltre a qualsiasi SSO esistente e alla creazione centralizzata di account, ciò comporterebbe i seguenti vantaggi:

  • assegnare utenti ai gruppi;
  • modificare immediatamente le informazioni dell’utente in diverse app;
  • eliminare l’utente quando viene rimosso dall’SSO;
  • ottenere l’elenco di utenti o gruppi in modo standard;

Abbiamo ricevuto dei finanziamenti da NGI tramite NLNet per implementazioni SCIM, potete leggere la proposta e i lavori correlati sul nostro forum qui. Proverei a implementare una prima soluzione in un plugin per Discourse per ora, ma sarebbe bello integrare questo in Discourse core a un certo punto. Fatemi sapere qualsiasi pensiero e opinione!

5 Mi Piace

Sembra strano che la loro specifica utilizzi /Users e /Groups anziché qualcosa come .well-known/scim/Users. Sembra certo che entrerà in conflitto con le route esistenti su molte applicazioni.

Sarei felice di aiutarti con questo se hai un po’ di budget da dedicare.

Posso immaginare che se fosse ben scritto e ampiamente utilizzato (o richiesto da diversi clienti enterprise), potrebbe diventare un plugin ufficiale.

Non immagino che diventerà mai parte del core, anche OAuth2 è un plugin.

4 Mi Piace

Penso sia possibile utilizzare qualsiasi percorso come prefisso per gli endpoint SCIM, ad esempio api/scim/v2/Users o percorsi noti che suggerisci.

Sì, capisco le preoccupazioni riguardo al core, quindi forse un obiettivo può essere che diventi un plugin ufficiale. Grazie anche per l’offerta di aiuto, non c’è budget aggiuntivo ma vedremo in futuro come si svilupperà.

1 Mi Piace

Ah. Ha senso. Ho pensato che dovesse essere così, ma non l’ho visto nella mia rapida lettura. Darei un’occhiata agli altri plugin di autenticazione come riferimento.

Ecco i plugin ufficiali con ‘auth’ nel nome

discourse-apple-auth/                  discourse-microsoft-auth/
discourse-authentication-validations/  discourse-oauth2-basic/
discourse-auth-no-email/               discourse-vk-auth/
discourse-development-auth/            discourse-wikimedia-auth/

Sembra un progetto interessante

1 Mi Piace

È ora disponibile una prima versione del plugin qui:

La mappatura è ancora molto semplice, funzioneranno solo i campi di base di utenti e gruppi. Ho testato con il plugin SCIM di keycloak e puoi già aggiungere/modificare utenti su Keycloak che verranno quindi creati/aggiornati su Discourse. Il plugin SCIM di keycloak è qui:

Qualsiasi feedback è molto benvenuto :slight_smile: Testeremo ulteriormente con keycloak nel nostro ambiente e voglio ancora testarlo con authentik.

4 Mi Piace

Fantastico, ottima idea. Non vedo l’ora di provarlo. Grazie!

Sarebbe fantastico se potessi pubblicarlo come argomento nella categoria Plugin :slight_smile:

1 Mi Piace

Nella categoria Plugin il pulsante di pubblicazione è disabilitato per me e vedo il messaggio che non mi è consentito pubblicare in quella categoria.

Unisciti al gruppo @plugin_authors. Ciò ti consente di creare un argomento in quella categoria.

Ah grazie, ho inviato una richiesta :slight_smile:

1 Mi Piace

… e infine pubblicato: SCIM Plugin

2 Mi Piace