Development #66445
auth_oidc: le code de vérification des attributs requis est cassé si user_info ne contient pas exactement les mêmes attributs requis que l'idtoken
Début:
21 juin 2022
Echéance:
% réalisé:
0%
Temps estimé:
Patch proposed:
Oui
Planning:
Non
Description
Le code se présente ainsi :
for claim_mapping in provider.claim_mappings.all(): claim = claim_mapping.claim if claim_mapping.required: if '{{' in claim or '{%' in claim: logger.warning('claim \'%r\' is templated, it cannot be set as required') elif claim_mapping.idtoken_claim and claim not in id_token: logger.warning( 'auth_oidc: cannot create user missing required claim %r in id_token (%r)', claim, id_token, ) return None elif not user_info or claim not in user_info: logger.warning( 'auth_oidc: cannot create user missing required claim %r in user_info (%r)', claim, user_info, ) return NoneDeux cas ou la dernière condition (
elif not user_info...
) sera levé alors qu'elle ne devrait pas :
- si tous les mapping pointent vers l'idtoken alors user_info sera vide/None (car aucun mapping ne le réclamant il le user_info endpoint ne sera pas appelé), alors un claim bien présent dans l'idtoken finira par lever la dernière condition,
- si un claim requis et présent dans l'idtoken n'est pas présent aussi dans la réponse du endpoint user_info
Pour corriger cela il faudrait revoir le code ainsi :
for claim_mapping in provider.claim_mappings.all(): claim = claim_mapping.claim if claim_mapping.required: if '{{' in claim or '{%' in claim: logger.warning('claim \'%r\' is templated, it cannot be set as required') elif claim_mapping.idtoken_claim: if claim not in id_token: logger.warning( 'auth_oidc: cannot create user missing required claim %r in id_token (%r)', claim, id_token, ) return None else: # user_info claim if not user_info or claim not in user_info: logger.warning( 'auth_oidc: cannot create user missing required claim %r in user_info (%r)', claim, user_info, ) return None
Fichiers
Révisions associées
Historique
Mis à jour par Benjamin Dauvergne il y a presque 2 ans
- Fichier 0001-auth_oidc-check-required-claims-only-from-the-idtoke.patch 0001-auth_oidc-check-required-claims-only-from-the-idtoke.patch ajouté
- Tracker changé de Bug à Development
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Mis à jour par Benjamin Dauvergne il y a presque 2 ans
- Fichier 0001-auth_oidc-check-required-claims-only-from-the-idtoke.patch 0001-auth_oidc-check-required-claims-only-from-the-idtoke.patch ajouté
Avec un test c'est mieux.
Mis à jour par Paul Marillonnet il y a presque 2 ans
- Statut changé de Solution proposée à Solution validée
Yes complètement, bien vu.
Mis à jour par Benjamin Dauvergne il y a presque 2 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit c0a41644a1ba7e893bc91b5afda806ac9159dcf9 Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Tue Jun 21 13:41:58 2022 +0200 auth_oidc: check required claims only from the idtoken or the user_info endpoint not both (#66445)
Mis à jour par Transition automatique il y a presque 2 ans
- Statut changé de Résolu (à déployer) à Solution déployée
auth_oidc: check required claims only from the idtoken or the user_info endpoint not both (#66445)