Projet

Général

Profil

Development #22209

OIDC: ajouter un hook en fin de backend d'authentification OIDC

Ajouté par Benjamin Dauvergne il y a environ 6 ans. Mis à jour il y a plus de 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
01 mars 2018
Echéance:
% réalisé:

100%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

Le hook s'appellera a2_hook_auth_oidc_backend_modify_user, il prend comme paramètres:
  • user
  • user_info
  • id_token (voir authentic2_auth_oidc.utils.IDToken pour l'API de cet objet)
  • access_token
  • provider (object OIDCProvider)

Si il renvoie True l'objet utilisateur est sauvegardé.


Fichiers

Révisions associées

Révision 9eb98fad (diff)
Ajouté par Benjamin Dauvergne il y a environ 6 ans

auth_oidc: fix missing definition for base64url_encode (#22209)

Révision b7274d2d (diff)
Ajouté par Benjamin Dauvergne il y a environ 6 ans

auth_oidc: add hook to modify user before login (fixes #22209)

Hook is named a2_hook_auth_oidc_backend_modify_user, it takes
parameters:
- user
- access_token
- user_info
- id_token
- provider

Historique

#2

Mis à jour par Benjamin Dauvergne il y a environ 6 ans

On utilise ça comme ceci

class AppConfig:
....

    def a2_hook_auth_oidc_backend_modify_user(self, user, user_info, **kwargs):
        ou_map = {ou.slug: ou for ou in get_ou_model().cached()}
        user_ou = ou_map.get(settings.GNM_MAPPING.get(user_info.get('ou_slug'))) or get_default_ou()
        if user.ou != user_ou:
            user.ou = user_ou
            return True
        else:
            return False

#3

Mis à jour par Benjamin Dauvergne il y a environ 6 ans

Au passage j'ai corrigé un bug qui m'est apparu dans authentic2_auth_oidc.models (je ne vois pas comment on passe à travers actuellement).

#4

Mis à jour par Frédéric Péters il y a environ 6 ans

  • Statut changé de Nouveau à En cours
  • Patch proposed changé de Non à Oui

Ça roule, ack pour le match, je vais préparer le nécessaire côté guichet.

#5

Mis à jour par Benjamin Dauvergne il y a environ 6 ans

  • Statut changé de En cours à Résolu (à déployer)
  • % réalisé changé de 0 à 100
#6

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

  • Statut changé de Résolu (à déployer) à Fermé

Formats disponibles : Atom PDF