Erreur lors de l'authentification via oidc (String.split)

Bonsoir,

Après avoir complété le fichier de configuration de mon instance de mobilizon à l’aide de la doc pour permettre l’authentification via openid connect (CAS dans mon cas), une erreur est apparue et semble concerner le splitting du champ default scope de la configuration.

Apr 21 23:23:17 mobilizon mobilizon[38114]: Request: GET /auth/keycloak/callback?code=<code_oidc>
Apr 21 23:23:17 mobilizon mobilizon[38114]: ** (exit) an exception was raised:
Apr 21 23:23:17 mobilizon mobilizon[38114]:     ** (FunctionClauseError) no function clause matching in String.split/3
Apr 21 23:23:17 mobilizon mobilizon[38114]:         (elixir 1.13.0) lib/string.ex:473: String.split(["email"], ",", [])
Apr 21 23:23:17 mobilizon mobilizon[38114]:         (ueberauth_keycloak_strategy 0.2.0) lib/ueberauth/strategy/keycloak.ex:159: Ueberauth.Strategy.Keycloak.credentials/1
Apr 21 23:23:17 mobilizon mobilizon[38114]:         (ueberauth_keycloak_strategy 0.2.0) lib/ueberauth/strategy.ex:284: Ueberauth.Strategy.Keycloak.auth/1
Apr 21 23:23:17 mobilizon mobilizon[38114]:         (ueberauth 0.6.3) lib/ueberauth/strategy.ex:319: Ueberauth.Strategy.handle_callback_result/2
Apr 21 23:23:17 mobilizon mobilizon[38114]:         (ueberauth 0.6.3) lib/ueberauth/strategy.ex:308: Ueberauth.Strategy.run_callback/2
Apr 21 23:23:17 mobilizon mobilizon[38114]:         (mobilizon 2.0.2) lib/web/controllers/auth_controller.ex:80: Mobilizon.Web.AuthController.callback/2
Apr 21 23:23:17 mobilizon mobilizon[38114]:         (mobilizon 2.0.2) lib/web/controllers/auth_controller.ex:1: Mobilizon.Web.AuthController.action/2
Apr 21 23:23:17 mobilizon mobilizon[38114]:         (mobilizon 2.0.2) lib/web/controllers/auth_controller.ex:1: Mobilizon.Web.AuthController.phoenix_controller_pipeline/2

Je précise que le notre CAS (serveur d’authentification) autorise bien l’application à l’utiliser, le blocage arrive ensuite. Une page d’erreur de Mobilizon arrive bel et bien après l’authentification

We're sorry, but something went wrong on our end.

The Mobilizon server **Mobilizon** seems to be temporarily down.
If the issue persists, you may try to contact the server administrator

Je met la configuration oidc côté mobilizon.

config :ueberauth,
    Ueberauth,
    providers: [
      keycloak: {Ueberauth.Strategy.Keycloak, [default_scope: "email"]}
    ]
config :mobilizon, :auth,
  oauth_consumer_strategies: [
    {:keycloak, "MiNET"}
  ]
config :ueberauth, Ueberauth.Strategy.Keycloak.OAuth,
  client_id: "<clientId>",
  client_secret: "<secret>",
  site: "<site_url>",
  authorize_url: "<authorize_url>",
  token_url: "<token_url>",
  userinfo_url: "<profile_url>",
  token_method: :post

Si vous avez une piste à me proposer je vous en serais reconnaissant.
Merci !

Sulray

Est-ce que vous avez une solution / voie à approfondir pour résoudre ce problème ?

À priori ce serait lié à la réponse du serveur OpenID Connect qui ne serait pas celle attendue. Quel est l’outil de CAS utilisé pour que je puisse essayer de reproduire?

Je viens aussi de corriger quelques soucis liés à la connexion avec un fournisseurs tiers d’authentification à l’instant, en vérifiant que cela marche correctement avec Keycloak : Various 3rd-party auth providers improvements (!1221) · Merge requests · Framasoft / Mobilizon · GitLab

On utilise CAS apereo

Comme c’est un peu une usine à gaz à mettre en place je ne vais pas hélas pouvoir tester ça facilement moi-même. Je regarderais du côté de la déclaration des scopes.
Est-ce que le service OpenID Connect est déjà utilisé avec succès avec d’autres logiciels ?

Oui, c’est ce qu’on utilise pour plusieurs de nos services.

Ça m’a été facile de rajouter le support de CAS en testant avec le serveur de démo d’Apereo, donc CAS sera disponible dans la prochaine version, si vous utilisez aussi ça.

Si vous pouvez me créer un compte et m’envoyer les détails de la configuration par message privé, je vous en serais reconnaissant et ce sera corrigé plus rapidement. :slight_smile: