SSO OAuth & Nextcloud ?

:open_hands: Hello la communauté,

J’ai vu passer plusieurs succès d’intégration d’authentification SSO avec divers services (Github, CAS/Apereo), alors j’ai voulu tenter avec Nextcloud.
Est-ce que quelqu’un a déjà essayé et réussi ?
(j’ai vu un feedback aussi pour promouvoir davantage un système SAML…?)

De mon côté, en suivant le tutoriel sso_with_github.md de @Sylvain je bloque sur la correspondance des champs et le fait que si la correspondance renvoi des champs vides, l’association se fait quand même (est-ce vraiment un comportement attendu ?). J’ai donc un SSO « universel », tous mes utilisateurs Nextcloud peuvent se connecter à un seul compte unique fait d’identifiants vides associés… not cool. :thinking:

Du côté Fab-Manager, quand je créé un nouveau compte via Nextcloud, je reçois bien un mail qui me « confirme » :

Son identifiant fournisseur est .

Voici les informations connues à son propos :

user.uid :
user.email :

Je pense que le problème vient probablement aussi de l’API Nextcloud et de son retour json qui a une construction particulière :

  {
         "ocs":{
            "meta":{
               "status":"ok",
               "statuscode":200,
               "message":"OK"
            },
            "data":{
               "enabled":true,
               "storageLocation":"########",
               "id":"########",
               "lastLogin":########,
               "backend":"Database",
               "subadmin":[
                  "Actors"
               ],
               "quota":{
                  "free":71373287424,
                  "used":694711965,
                  "total":72067999389,
                  "relative":0.96,
                  "quota":-3
               },
               "avatarScope":"v2-federated",
               "email":"########",
               "emailScope":"v2-federated",
               "displaynameScope":"v2-federated",
               "phone":"",
               "phoneScope":"v2-local",
               "address":"########",
               "addressScope":"v2-local",
               "website":"########",
               "websiteScope":"v2-local",
               "twitter":"########",
               "twitterScope":"v2-local",
               "groups":[
                  "Actors"
               ],
               "language":"en",
               "locale":"fr_FR",
               "backendCapabilities":{
                  "setDisplayName":true,
                  "setPassword":true
               },
               "display-name":"######## ########"
            }
         }
      }

Au niveau de la correspondance des champs, j’ai donc quelque chose qui ressemble à :

  • Modèle => User
  • Champ=> uid
  • Terminaison/URL de l’API=> /ocs/v2.php/cloud/user?format=json
  • Type d’API => json
  • Champ de l’API => ocs.data.id

  • Modèle => User
  • Champ=> email
  • Terminaison/URL de l’API=> /ocs/v2.php/cloud/user?format=json
  • Type d’API => json
  • Champ de l’API => ocs.data.email

J’ai fait différents tests en pensant que ça venait de l’identification des Champs de l’API, pour l’id par exemple : id ; ocs-data-id ; ocs.data.id … mais rien n’y fait, le retour est toujours « vide » même si la connexion/création se fait.

Par ailleurs, j’utilise le SSO de Nextcloud pour me connecter effectivement à une plateforme WordPress (ocs.data.id) et une plateforme Moodle (ocs-data-id) et ça fonctionne.

Si ça se trouve, ce n’est pas un problème d’API… pourrait-ce être lié à la config Nginx ?
(config « en production » / Docker + nginx serveur par dessus).


Ensuite, mais c’est plutôt secondaire, même si les associations se faisaient effectivement, il y aurait toujours le problème lié au fait que Fab-Manager demande obligatoirement « Nom » et « Prénom » alors que l’API de Nextcloud ne renvoit qu’un seul « Display-Name », par exemple.

Et au final, même en remplissant manuellement les informations pour la création d’un nouveau compte suite à une connexion SSO, je reçois bien les mails, les notifs, mais en tant qu’utilisateur je reste bloqué sur /#!/profile_completion, il faut manuellement revenir à la page d’accueil, ce qui ne serait pas tout à fait une expérience d’onboarding souhaitable ?

Je ne parlerai pas du fait qu’en passant en SSO, si je perds ma session « superadmin », je ne peux plus me reconnecter (Unprocessable Entitity, etc.) puisque les associations sont vides et qu’il n’y a pas de correspondances effectives. Idem pour les tentatives d’association de comptes existants.

Bref, en attendant, je vais repasser sur le tradi email + password, mais si d’autres ont réussi, je suis preneur de tout bon conseil ou solution. :slight_smile:

Merci :v:

Salut,

C’est un sujet compliqué que le SSO :wink: et on manque vraiment de temps pour l’approfondir en ce moment. Je pense que la configuration que tu as faite est correcte. Peut-être avons-nous un bug côté Fab-manager (on manque aussi de tests auto sur cette partie).

Concernant le display-name, il faudrait effectivement qu’on rajoute quelque chose comme un champ regex pour pouvoir extraire une partie du champ.

Je vais essayer de déboguer ça dès que possible et je te tiens au courant. En tout cas merci de ton retour :wink:
Bonne journée,

1 « J'aime »

Salut,

Merci à toi, c’est super d’avoir un retour de ta part aussi rapidement. :thumbsup:

Je tente quelque chose d’un peu particulier puisqu’il s’agit d’un léger « détournement » de Fab-Manager à des fins de Learning-Lab-Management:dizzy_face:
Alors… on pourrait ouvrir tout un débat là dessus, mais je pense qu’on s’entendra sur le fait qu’on vient de la même culture initiale, et je voulais voir si je pouvais adapter/instrumentaliser deux ou trois choses pour correspondre à des besoins sensiblement similaires. :slight_smile:

Quoiqu’il en soit, je suis rassuré (dékéblo) de savoir que je ne tourne pas forcément en boucle sur mes propres « bidouillages ». :blush:
:pray:

On reste en contact et merci pour tout ce travail ! Keep it up!

:heart::heart:

1 « J'aime »

Salut,

Ça date un peu mais je tenais à signaler ici que la version 5.3.1 corrige plusieurs problèmes liés à l’authentification oAuth 2.0 :wink:

Bonne journée