Projet

Général

Profil

Development #27540

idp_oidc: déterminer si claims dont la valeur est absente doivent être absent ou à null

Ajouté par Benjamin Dauvergne il y a 3 mois. Mis à jour il y a environ 2 mois.

Statut:
Solution proposée
Priorité:
Bas
Assigné à:
Catégorie:
-
Version cible:
-
Début:
24 oct. 2018
Echéance:
% réalisé:

0%

Patch proposed:
Oui

Description

C'est une chose dont je me suis aperçu en ajoutant le test OIDC pour le nouveau type d'attribut image (#26022), si un claim pointe sur un attribut absent du dictionnaire produit par attributes_ng alors je ne produit pas le claim:

# src/authentic2_idp_oidc/utils.py

def create_user_info(client, user, scope_set, id_token=False):
    '''Create user info dictionnary'''
    user_info = {
        'sub': make_sub(client, user)
    }
    attributes = get_attributes({
        'user': user, 'request': None, 'service': client,
        '__wanted_attributes': client.get_wanted_attributes()})
    for claim in client.oidcclaim_set.filter(name__isnull=False):
        if not set(claim.get_scopes()).intersection(scope_set):
            continue
        if not claim.value in attributes: # <-- ICI
            continue
        user_info[claim.name] = normalize_claim_values(attributes[claim.value])
        # check if attribute is verified
        if claim.value + ':verified' in attributes:
            user_info[claim.value + '_verified'] = True
    hooks.call_hooks('idp_oidc_modify_user_info', client, user, scope_set, user_info)
    return user_info

Je me demande si ce ne serait pas plus agréable pour les consommateurs que le claim soit toujours présent (déjà ça rend mon test plus propre, au lieu d'un .get() je peux faire un []) mais avec une valeur None/null.

0001-idp_oidc-use-force_bytes-text-and-six.text_type-inst.patch Voir (2,79 ko) Benjamin Dauvergne, 22 nov. 2018 12:48

0002-idp_oidc-export-claim-even-if-source-attribute-is-ab.patch Voir (2,31 ko) Benjamin Dauvergne, 22 nov. 2018 12:48

Historique

#1 Mis à jour par Benjamin Dauvergne il y a 2 mois

  • Tracker changé de Support à Development

#2 Mis à jour par Benjamin Dauvergne il y a 2 mois

  • Priorité changé de Normal à Bas

#3 Mis à jour par Benjamin Dauvergne il y a 2 mois

  • Assigné à Benjamin Dauvergne supprimé

#4 Mis à jour par Benjamin Dauvergne il y a environ 2 mois

  • Assigné à mis à Benjamin Dauvergne

#5 Mis à jour par Benjamin Dauvergne il y a environ 2 mois

Tous les claims déclarés sont désormais à null aucune valeur n'est trouvée via les attributs.

Si plusieurs mapping génère des valeurs on garde la dernière différente de None.

J'ai du modifier un test provenant de #23643 qui testait systématiquement
l'absence de preferred_username car ce n'était pas le but de ce ticket (le but
étant que cela fonctionne pour un utilisateur sans username, ce qui est
toujours le cas).

Formats disponibles : Atom PDF