Pleroma, SSO et OAuth2

Salut,
@Raoull expérimente un système d’authentification compatible LDAP/OAuth2, et essaye d’utiliser l’intégration OAuth2 de Pleroma. Nous ramons hélas pour ativer l’intégration OAuth2 de Pleroma.

Quelqu’un aurait il de l’expérience avec Pleroma ? Ou avec le framework Elixir Ueberauth que Pleroma utilise pour l’authentification ?

Nous avons :

  • Une fournisseur OAuth2 avec LDAP intégré,
  • Une instance Pleroma de test compilée depuis la source
  • Regardé ce bout de documentation Pleroma qui mentionne l’auth Configuration Cheat Sheet - Pleroma Documentation
  • Configuré la stratégie « Ueberauth.Strategy.Keycloak.OAuth » dans prod.secret.exs en suivant la doc
  • Redémaré pleroma après le changement de configuration

Mais nous bloquons à ce stade. Dans l’interface web, aucun bouton ou d’option pour se connecter avec le fournisseur extérieur (Keycloak.OAuth), seul le champ de connexion classique apparait (login/mpd) pour l’authentification interne.

Le code source ce Pleroma contiens un template qui semble pertinent pour OAuth, mais je n’ai rien trouvé dans la doc ou en ligne pour activer ce template /opt/pleroma/lib/pleroma/web/templates/o_auth/o_auth/consumer.html.eex

Daneel

Salut,

La stratégie Ueberauth.Strategy.Keycloak.OAuth attend un fournisseur OpenID Connect valide, est-ce que c’est le cas de votre système d’authentification ?

Vous pouvez peut-être plutôt utiliser LDAP ? Configuration Cheat Sheet - Pleroma Documentation

[…] un fournisseur OpenID Connect valide, est-ce que c’est le cas de votre système d’authentification ?

Oui, nous testons cela avec Authentik, et avons configuré coté Authentik un fournisseur de type « OAuth2 /OpenID »

Je suspecte que qqch manque du coté de Pleroma, car nous ne voyons pas de bouton de connexion OAuth2/OpenID dans l’interface, la seule option visible est l’auth avec base interne avec le formulaire login+mdp. Aussi, les statistiques Authentik signalent 0 tentative d’auth.

Voici un extrait de la configuration coté Pleroma:

keycloak_url = "https://..."

config :ueberauth, Ueberauth.Strategy.Keycloak.OAuth,
  client_id: "...",
  client_secret: "...",
  site: keycloak_url,
  authorize_url: "#{keycloak_url}/application/o/authorize/",
  token_url: "#{keycloak_url}/application/o/token/",
  userinfo_url: "#{keycloak_url}/application/o/userinfo/",
  token_method: :post

config :ueberauth, Ueberauth,
  providers: [
    keycloak: {Ueberauth.Strategy.Keycloak, [uid_field: :email]}
  ]

Vous pouvez peut-être plutôt utiliser LDAP ?

L’utilisation du SSO fait partie de nos objectifs. Nous testons différents logiciels ActivityPub afin d’en trouver lesquels permettent d’utiliser le SSO.

Nous déjà une instance de logiciel (autre que Pleroma) qui gère LDAP. Nous testons Pleroma comme alternative justement car l’utilisation de SSO semble prévu dans le code de Pleroma, pas seulement LDAP.

Daneel

Vous devez également définir la variable d’environnement OAUTH_CONSUMER_STRATEGIES à keycloak:ueberauth_keycloak_strategy pour faire tourner le serveur.

https://docs-develop.pleroma.social/backend/configuration/cheatsheet/#auth

Cette variable d’environnement doit également préalablement être définie lorsque vous récupérez les dépendances :

OAUTH_CONSUMER_STRATEGIES="keycloak:ueberauth_keycloak_strategy" mix deps.get

https://docs-develop.pleroma.social/backend/configuration/cheatsheet/#oauth-consumer-mode

C’est une bonne remarque. Nous avons suivi la documentation mentionné, et donc définit la variable d’environnement OAUTH_CONSUMER_STRATEGIES, et installé les dépendances correspondantes.

As-tu déjà réussi à utiliser le « OAuth Consumer Mode » de Pleroma ? A quoi cela ressemble il dans l’interface utilisateur ?