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.
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.
Merci