Projet

Général

Profil

Development #63729

auth_oidc : avoir une stratégie de fédération sur l'email, mais sans création

Ajouté par Thomas Noël il y a presque 2 ans. Mis à jour il y a presque 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
08 avril 2022
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

On a une STRATEGY_CREATE qui, si l'OU est configurer avec unicité de mail, va rechercher si un utilisateur avec le même mail existe, et sinon le créer.

Cette création peut ne pas être désirée, typiquement dans le cas d'un OIDC avec un annuaire qui est déjà pré-provisionné par LDAP

Il serait intéressant d'avoir une STRATEGY_FIND_EMAIL, qui fasse la réconciliation selon l'attribut email, mais n'aille pas plus loin (pas de création de compte).


Fichiers

Révisions associées

Révision e02bf69c (diff)
Ajouté par Paul Marillonnet il y a presque 2 ans

auth_oidc: add a STRATEGY_FIND_EMAIL user-matching provider option (#63729)

Historique

#1

Mis à jour par Paul Marillonnet il y a presque 2 ans

  • Sujet changé de OIDC : avoir une stratégie de fédération sur l'email, mais sans création à auth_oidc : avoir une stratégie de fédération sur l'email, mais sans création
  • Statut changé de Nouveau à En cours
  • Assigné à mis à Paul Marillonnet
#2

Mis à jour par Paul Marillonnet il y a presque 2 ans

Avec un peu de churn car il faut inverser la logique du backend : résoudre les claims avant de tenter l’appairage, car on a besoin de l’email pour appairer.

#3

Mis à jour par Paul Marillonnet il y a presque 2 ans

  • Statut changé de Solution proposée à En cours

Et en fait, à travailler sur #64626 je réalise que ce n’est pas la bonne façon d’aborder les différents cas d’unicité du courriel. Je revois ma copie.

#6

Mis à jour par Benjamin Dauvergne il y a presque 2 ans

Du coté FC j'ai viré toute considération concernant l'unicité du mail au niveau de l'OU considérant que c'est implicite avec FC, je ferai de même ici si la stratégie choisie est de rechercher par email (et globalement je pense que ça permettra de déprécier A2_EMAIL_IS_UNIQUE, ça n'a aucun usage à ma connaissance, c'était juste pour pallier à l'absence de ou.email_is_unique dans le passé). Coté FC ça a bien simplifié le code :

    def get_or_create_user_with_email(self, email):
        ou = get_default_ou()

        qs = User.objects.filter(email__iexact=email)
        if not a2_app_settings.A2_EMAIL_IS_UNIQUE:
            qs = qs.filter(ou=ou)

        Lock.lock_email(email)
        try:
            user = qs.get()
        except User.DoesNotExist:
            return User.objects.create(ou=ou, email=email), True

        if user.ou != ou:
            raise UserOutsideDefaultOu
        return user, False

#7

Mis à jour par Paul Marillonnet il y a presque 2 ans

  • Statut changé de Solution proposée à En cours

Ok, très bien, ça me va, je vais proposer un nouveau patch qui emprunte cette direction.

#8

Mis à jour par Paul Marillonnet il y a presque 2 ans

Ok, c’est mieux ainsi, en effet.
Je peux couper en deux patches avec 0001 qui serait purement le churn, i.e. déplacer la résolution des claims avant la tentative d’appairage, si ça peut faire gagner en clarté.

#9

Mis à jour par Benjamin Dauvergne il y a presque 2 ans

  • Statut changé de En cours à Solution validée
#10

Mis à jour par Benjamin Dauvergne il y a presque 2 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit a6ab8a2624e1ec8d6a92a4c3dd1662ed76de7fd6
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Wed Apr 27 18:00:51 2022 +0200

    auth_oidc: add a STRATEGY_FIND_EMAIL user-matching provider option (#63729)
#11

Mis à jour par Transition automatique il y a presque 2 ans

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

Mis à jour par Transition automatique il y a plus d'un an

Automatic expiration

Formats disponibles : Atom PDF