-
Notifications
You must be signed in to change notification settings - Fork 16
Description
Lorsque l'on s'identifie via un provider openId, l'identifiant est généré à partir du prenom.nom
"identifiant": f"{user_info['given_name'].lower()}.{user_info['family_name'].lower()}",Cette génération ne gère pas le cas des homonymes. En effet, si deux personnes portent le même nom prénom, ils auront le même identifiant.
C'est possible en base de données (la colonne identifiant n'a pas de contrainte d'unicité), et le compte openid est rattaché à un utilisateur en s'appuyant sur l'adresse mail.
Cependant, lors de l'authentification, on suppose l'unicité du champs identifiant.
user = db.session.execute(
sa.select(models.User)
.where(models.User.identifiant == username)
.where(models.User.filter_by_app())
).scalar_one()On a donc un problème manifeste.
A priori, utiliser l'identifiant pour s'identifier semble une bonne idée :)
Est-ce que ça vous semble ok de changer la manière dont la valeur de la colonne "identifiant" est générée ? L'utilisation telle qu'elle d'une valeur d'identifiant fournie par le provider me semble être plus à propos.
Je suppose qu'il y a plusieurs manière de gérer les comptes côté provider (mail, id, etc.), est-ce que ça vous semble ok de renseigner ce champs en config ?
# example
[[AUTHENTICATION.PROVIDERS]]
IDENTIFIANT_FIELD_NAME="upn" # ou preferred_username, ou autre