Development #65942
idp_oidc : un client ayant accès à l’/api/users/ ne doit avoir accès qu’aux usagers s’étant déjà connecté chez lui
0%
Description
Suite de #65877 ; mais aussi assez indépendamment, dans la situation actuelle où OIDCClient.has_api_access == True
signifie que c’est open-bar.
Files
Related issues
Associated revisions
History
Updated by Paul Marillonnet over 2 years ago
- Related to Development #65877: idp_oidc : les hooks de l’api /users/ doivent tenir compte de la résolution des claims lorsque l’appelant est un client oidc connu added
Updated by Paul Marillonnet over 2 years ago
- Related to Development #65943: idp_oidc : pour un usager donné, un client ayant accès à l’/api/users/ ne doit voir que les informations d’identité auxquelles il a accès dans la configuration oidc added
Updated by Paul Marillonnet over 2 years ago
- File 0001-idp_oidc-restrict-client-s-returned-qs-to-authorized.patch 0001-idp_oidc-restrict-client-s-returned-qs-to-authorized.patch added
- Status changed from Nouveau to Solution proposée
- Patch proposed changed from No to Yes
Updated by Benjamin Dauvergne over 2 years ago
- Status changed from Solution proposée to En cours
- Assignee set to Paul Marillonnet
Si le mode d'autorisation est par ou, l'autorisation est accrochée à l'ou pas au client et sur OU et OIDCClient tu as une GenericRelation 'oidc_authorizations' pour simplifier ta requête.
Updated by Paul Marillonnet over 2 years ago
- File 0001-idp_oidc-restrict-client-s-returned-qs-to-authorized.patch 0001-idp_oidc-restrict-client-s-returned-qs-to-authorized.patch added
- Status changed from En cours to Solution proposée
Benjamin Dauvergne a écrit :
Si le mode d'autorisation est par ou, l'autorisation est accrochée à l'ou pas au client et sur OU et OIDCClient tu as une GenericRelation 'oidc_authorizations' pour simplifier ta requête.
Bien vu, en effet c’est mieux comme ça.
Updated by Benjamin Dauvergne over 2 years ago
- Status changed from Solution proposée to En cours
Il faudrait garder le fastpath avant aussi.
Updated by Paul Marillonnet over 2 years ago
J’ai l’impression que dans le cas général, Client.authorized_roles n’est pas défini. On se retrouve donc pris dans ce fastpath et le queryset n’est pas réduit.
Je peux adapter les tests pour définir authorized_roles sur la fixture oidc_client, mais je ne sais pas si ce sera représentatif de la réalité.
Updated by Paul Marillonnet over 2 years ago
- Related to Development #66114: idp_oidc : effectuer systématiquement la réduction des informations retournées à un client en fonction des autorisations qu’il possède added
Updated by Paul Marillonnet over 2 years ago
- Status changed from En cours to Solution proposée
Je laisse en solution proposée en attendant, car je ne vois pas comment le fastpath peut arriver avant.
Updated by Benjamin Dauvergne about 2 years ago
- Status changed from Solution proposée to Solution validée
C'est ça que j'aurai aimé garder avant, pour voir clairement les cas où on ne touche à rien, ensuite avoir tout le spécifique OIDC / User.
# fast path if not issubclass(qs.model, User): return qs client = .... if client is None: return qs
Updated by Paul Marillonnet over 1 year ago
Benjamin Dauvergne a écrit :
C'est ça que j'aurai aimé garder avant, pour voir clairement les cas où on ne touche à rien, ensuite avoir tout le spécifique OIDC / User.
[...]
Ok, simplement il y a le if client.authorized_roles.exists():
qui doit rester en dessous de la modification du queryset propre à ce ticket. Je vais pousser cette version en remontant le fastpath qui ne contiendra alors plus que
+ # fast path
+ if not issubclass(qs.model, User) or client is None:
+ return qs
+
Updated by Paul Marillonnet over 1 year ago
- Status changed from Solution validée to Résolu (à déployer)
commit 2bf67721b7731a124512f0ff01d9e67457af5065 Author: Paul Marillonnet <pmarillonnet@entrouvert.com> Date: Thu Jun 2 17:28:32 2022 +0200 idp_oidc: restrict client's returned qs to authorized users (#65942)
Updated by Transition automatique over 1 year ago
- Status changed from Résolu (à déployer) to Solution déployée
idp_oidc: restrict client's returned qs to authorized users (#65942)