Ajouter la prise en charge du SCIM en tant que fournisseur de services

Comme mentionné précédemment ici, je pense que ce serait une fonctionnalité intéressante si Discourse prenait en charge le protocole SCIM. SCIM est un standard proposé par l’IETF via les RFC7644 et RFC7643 qui vise à fournir une solution pour la gestion des utilisateurs/groupes via une simple API REST. Notre cas d’utilisation serait de gérer les identités des utilisateurs et les appartenances aux groupes via un service distinct qui agit comme un client SCIM, Keycloak dans notre cas. Discourse agirait comme un fournisseur de services SCIM. En plus de toute authentification unique (SSO) et création de compte centralisée existante, cela présenterait les avantages suivants :

  • attribuer des utilisateurs à des groupes ;
  • modifier les informations des utilisateurs immédiatement dans plusieurs applications ;
  • supprimer l’utilisateur lorsqu’il est supprimé du SSO ;
  • obtenir la liste des utilisateurs ou des groupes de manière standard ;

Nous avons reçu un financement de NGI via NLNet pour les implémentations SCIM, vous pouvez lire la proposition et sur les travaux connexes sur notre forum ici. J’essaierais d’implémenter une première solution dans un plugin Discourse pour l’instant, mais il serait intéressant d’intégrer cela au cœur de Discourse à un moment donné. Faites-moi savoir vos réflexions et opinions !

5 « J'aime »

Il semble étrange que leur spécification utilise /Users et /Groups plutôt que quelque chose comme .well-known/scim/Users. Il semble certain que cela entrera en conflit avec les routes existantes sur de nombreuses applications.

Je serais heureux de vous aider si vous avez un budget à consacrer.

J’imagine que si c’était bien écrit et largement utilisé (ou requis par plusieurs clients d’entreprise), cela pourrait devenir un plugin officiel.

Je n’imagine pas que cela deviendra jamais une partie du cœur du système, même Oauth2 est un plugin.

4 « J'aime »

Je pense qu’il est possible d’utiliser n’importe quel chemin comme préfixe pour les points de terminaison SCIM, par exemple api/scim/v2/Users ou des chemins bien connus que vous suggérez.

Oui, je comprends les préoccupations concernant le cœur, donc peut-être qu’un objectif peut être qu’il devienne un plugin officiel. Merci également pour l’offre d’aide, il n’y a pas de budget supplémentaire, mais voyons à l’avenir comment cela évolue.

1 « J'aime »

Ah. C’est logique. Je pensais que ce devait être le cas, mais je ne l’ai pas vu dans ma lecture rapide. Je regarderais les autres plugins d’authentification comme référence.

Voici les plugins officiels avec ‘auth’ dans leur nom

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/

Cela ressemble à un projet intéressant

1 « J'aime »

Une première version du plugin est maintenant disponible ici :

Le mapping est encore très simple, seuls les champs de base des utilisateurs et des groupes fonctionneront. J’ai testé avec le plugin SCIM de keycloak et vous pouvez déjà ajouter/modifier des utilisateurs sur Keycloak qui seront ensuite créés/mis à jour sur Discourse. Le plugin SCIM de keycloak est ici :

Tout retour est le bienvenu :slight_smile: Nous allons tester davantage avec keycloak dans notre environnement et je veux toujours le tester avec authentik.

4 « J'aime »

C’est cool, super idée. J’ai hâte de tester ça. Merci !

Ce serait super si vous pouviez poster ça comme un sujet dans la catégorie Plugin :slight_smile:

1 « J'aime »

Dans la catégorie Plugin, le bouton de publication est désactivé pour moi et je vois le message que je ne suis pas autorisé à publier dans cette catégorie.

Rejoignez le groupe @plugin_authors. Cela vous permettra de créer un sujet dans cette catégorie.

Ah merci, j’ai envoyé une demande :slight_smile:

1 « J'aime »

… et finalement publié : SCIM Plugin

2 « J'aime »