Skip to content

Conversation

trecouvr
Copy link

@trecouvr trecouvr commented Oct 9, 2025

En utilisant le module OIDC sur un autre projet, je me suis rendu compte que le update_user_if_needed ne gère pas correctement le cas d'un projet avec User.sub nullable (ex: un projet qui a commencé avec un autre moyen d'authentification et qui migre sur OIDC, ou un projet qui a plusieurs moyens d'authentification actif).

Reproduction du bug

  1. Avoir un modèle User avec un champs sub nullable
  2. Laisser plusieurs utilisateurs se connecter avec un autre mode d'authentification
  3. Activer l'OIDC avec le backend de django-lasuite (pour se faire on va ajouter la colonne sub nullable avec valeur initiale null)
  4. Lorsque les utilisateurs se connect avec OIDC sur un compte déjà existant (meme email), échec de la requête sql car elle essaie de mettre à jour le sub de tous les users avec sub is NULL, comme il y a une unicité sur la colonne, la requête échoue

Proposal

Modifier la requête de mise à jour pour cibler uniquement l'utilisateur trouvé.

Note

La requête actuelle échoue également si on utilise un champs sub custom via settings.OIDC_USER_SUB_FIELD

User model sub field may be nullable in certain projects, we make sure
the user is correctly updated in this case by using the User.id during
update.

Example of User.sub being nullable: in case of multi authentication
backends.
Example of project using a nullable User.sub: docs (lasuite).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant