Projet

Général

Profil

Bug #47544

auth oidc, IntegrityError at /accounts/oidc/callback/

Ajouté par Frédéric Péters il y a plus de 3 ans. Mis à jour il y a plus de 3 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Catégorie:
-
Version cible:
-
Début:
11 octobre 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Sur un usager qui a déjà été lié à un idp oidc, sur une connexion qui arrive de cet idp, pour cet usager, avec un sub différent, on se trouve avec :

IntegrityError at /accounts/oidc/callback/
ERREUR:  la valeur d'une clé dupliquée rompt la contrainte unique « authentic2_auth_oidc_oidcaccount_user_id_key »
DETAIL:  La clé « (user_id)=(19108) » existe déjà.
...
File "/usr/lib/python3/dist-packages/authentic2/utils/__init__.py" in authenticate
  1168.     return dj_authenticate(request=request, **kwargs)

File "/usr/lib/python3/dist-packages/django/contrib/auth/__init__.py" in authenticate
  70.             user = _authenticate_with_backend(backend, backend_path, request, credentials)

File "/usr/lib/python3/dist-packages/django/contrib/auth/__init__.py" in _authenticate_with_backend
  116.     return backend.authenticate(*args, **credentials)

File "/usr/lib/python3/dist-packages/authentic2_auth_oidc/backends.py" in authenticate
  248.                     sub=id_token.sub)
...

Fichiers

Révisions associées

Révision 89be5e16 (diff)
Ajouté par Frédéric Péters il y a plus de 3 ans

auth oidc: update user sub when linking existing user during SSO (#47544)

Historique

#1

Mis à jour par Frédéric Péters il y a plus de 3 ans

#2

Mis à jour par Benjamin Dauvergne il y a plus de 3 ans

  • Statut changé de Solution proposée à Solution validée

En mettant sub dans l'argument defaults de get_or_create() tu dois pouvoir déplacer le deuxième save dans le if.

PS: je suppose que la liaison s'est faite sur le mail si ce n'est pas sur le sub.

#3

Mis à jour par Frédéric Péters il y a plus de 3 ans

  • Statut changé de Solution validée à Résolu (à déployer)

Poussé après cette modification. (+ un commit Jenkinsfile parce que la création du répertoire du job wip ne fonctionnait pas)

commit 89be5e16f89ed8eb120975377144677d529b86e2
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Sun Oct 11 17:08:36 2020 +0200

    auth oidc: update user sub when linking existing user during SSO (#47544)
#4

Mis à jour par Frédéric Péters il y a plus de 3 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF