a2_rbac: allow management of subclasses by manager roles (#77366) #54
Closed
pmarillonnet
wants to merge 1 commits from
wip/77366-authn-manager-oidc-claim-edit
into main
pull from: wip/77366-authn-manager-oidc-claim-edit
merge into: entrouvert:main
entrouvert:main
entrouvert:wip/89456-api-client-password
entrouvert:wip/89940-auth-oidc-logger-l-id-token-avan
entrouvert:wip/89627-dans-le-journal-pouvoir-filtrer
entrouvert:wip/83700-api-users-crud-phone-uniqueness-tel
entrouvert:wip/40685-squash-des-migrations-partial
entrouvert:wip/88158-phone-authn-lost-password-config-in-template-ctx
entrouvert:wip/88146-phone-authn-registration-fields-not-optional
entrouvert:wip/86937-accounts-multivalued-attribute-multiselect
entrouvert:wip/87701-phone-identifier-attribute-required
entrouvert:wip/56850-IndexError-filtrage-par-ou
entrouvert:wip/76835-open-redirection
entrouvert:wip/40685-squash-des-migrations
entrouvert:wip/72462-BO-inclure-courriels-dans-l-impo
entrouvert:wip/75205-rbac-admin-role-user-perm-restriction
entrouvert:wip/86671-accounts-multiple-attribute-readonly-display
entrouvert:wip/86670-api-users-attributes-multiple
entrouvert:wip/86663-idp-oidc-multiple-attributes-into-claims
entrouvert:wip/86086-FileNotFoundError-en-cherchant-a
entrouvert:wip/76224-enable-client-id-secret-edition-for-oidc-service
entrouvert:wip/76359-list-api-client-inherited-roles
entrouvert:wip/76858-Ne-pas-permettre-la-reutilisatio
entrouvert:wip/82737-authn-tel-post-registration-account-selection-buggy-form
entrouvert:wip/85276-bo-phone-identifier-duplicate-prevention
entrouvert:wip/75684-add-aria-required-to-registration-field
entrouvert:wip/82736-account-create-as-recent-authn
entrouvert:wip/68946-auth-oidc-provider-jwkset-from-wellknown
entrouvert:wip/82739-account-deletion-no-phone-yet-validated
entrouvert:wip/82522-ldap-user-bo-page-no-deletion-info
entrouvert:wip/83078-role-summary-refresh-cache-job-infra
entrouvert:wip/83211-a11y-add-title-attribute-to-password-policy-rules
entrouvert:wip/83078-role-summary-refresh-cache
entrouvert:wip/83227-phone-based-registration-api-save-registration-data
entrouvert:wip/83190-phone-registration-api-endpoint
entrouvert:wip/83024-idp-oidc-authz-default-max-value
entrouvert:wip/81334-manage-apiclient-edit-tabs
entrouvert:wip/81845-bo-form-error-on-hidden-tab
entrouvert:wip/82388-phone-authn-accounts-verification-label
entrouvert:wip/66416-ldap-add-ppolicy-support
entrouvert:wip/82128-do-not-migrate-role-attribution-condition-with-on-name-set
entrouvert:wip/81943-drf314
entrouvert:wip/81945-bookworm-jwcrypto-version
entrouvert:wip/81282-remove-user-phone-column
entrouvert:wip/81478-csv-buggy-password-hashes
entrouvert:wip/81152-phone-info-stats
entrouvert:wip/79807-zxcvbn-champs-profil
entrouvert:wip/80236-vacuum-at-cleanup
entrouvert:wip/78907-zxcvbn-champs-profil
entrouvert:wip/72614-phone-identifier-modification-ui
entrouvert:wip/79183-phone-authn-healthcheck-endpoint
entrouvert:wip/75474-auth-oidc-active-attributes-mapping
entrouvert:wip/79135-user-phone-model-field-deprecation
entrouvert:wip/79489-configuration-d-un-moyen-d-authe
entrouvert:wip/79507-page-d-info-sur-un-moyen-d-authe
entrouvert:wip/79528-libelle-valeur-par-defaut-du-sys
entrouvert:wip/77243-Voir-les-roles-administres-par-u
entrouvert:tmp-test-authn-migration
entrouvert:wip/78919-authn-local-admin-manager-perm
entrouvert:wip/78046-password-authn-identifier-selection
entrouvert:wip/78409-password-lost-phone-retrieval-next-url
entrouvert:wip/78096-password-lost-phone-retrieval-next-url
entrouvert:wip/78157-phone-registration-enforce-signed-next-url
entrouvert:wip/77756-authn-addroleaction-conditions
entrouvert:wip/77452-idp-oidc-ne-pas-lever-d-erreur-c
entrouvert:wip/77296-default-saml-service-appearance
entrouvert:wip/77309-default-saml-service-appearance
entrouvert:wip/69890-password-lost-sms-recovery
entrouvert:wip/72449-login-authn-single-identifier-field
entrouvert:wip/74969-auth-oidc-masquer-les-options-ho
entrouvert:wip/75138-sso-authz-default-appearance
entrouvert:wip/75139-neutral-authz-theme-bo-config
entrouvert:wip/76835-Verifier-la-possibilite-de-redir
entrouvert:wip/72538-auth-oidc-prompt-none-error
entrouvert:wip/76542-utiliser-hobo-multitenant-spoole
entrouvert:wip/76342-a2_rbac-role-natural-keys
entrouvert:wip/69606-statistics-performance
entrouvert:wip/65942-rebase
entrouvert:wip/73677-phone-usages-stats-command
entrouvert:wip/66053-csv-import-stocker-une-informati-postrebase-paul
entrouvert:wip/73150-fc-existing-account-manual-link
entrouvert:wip/66053-csv-import-stocker-une-informati
entrouvert:wip/73148-fc-link-mail-validation-on-account-create
entrouvert:wip/69561-page-title
entrouvert:wip/65877-idp-oidc-sync-claim-resolution
entrouvert:wip/65942-idp-oidc-client-api-access-queryset-reduction
entrouvert:wip/72870-fc-nolink-default
entrouvert:wip/auth-oidc-passive
entrouvert:wip/62710-auth-oidc-mainline-sync-cmd
entrouvert:wip/test-tox-4
entrouvert:wip/71463-api-ou-permissions-filtering
entrouvert:wip/66053-csv-import-verification-source
entrouvert:hotfix/v4.49
entrouvert:wip/71069-a11y-close-label-email-hint
entrouvert:wip/65411-auth-fc-locker-le-sub-pendant-le
entrouvert:wip/69335-check-password-drf-api
entrouvert:wip/69468-ldap-password-policy-control-mes
entrouvert:wip/69466-PasswordResetConfirmView-gerer-c
entrouvert:wip/69464-PasswordChangeView-en-cas-de-ref
entrouvert:hotfix/v4.37
entrouvert:wip/blocktrans-trimmed
entrouvert:wip/69526-apiclient-key
entrouvert:wip/62868-su-view-ldap-authn-failed-crash
entrouvert:wip/65411-auth-fc-sub-lock
entrouvert:wip/68607-Preparation-django-DeprecationWa
entrouvert:wip/68607-local-paul
entrouvert:wip/43221-CAS-and-referer-header
entrouvert:wip/xdist
entrouvert:wip/66986-saml-bo-idp-md-sources
entrouvert:wip/66794-role-add-form
entrouvert:wip/66497-manager-homepage
entrouvert:wip/60783-manu
entrouvert:wip/66207-sidepage-menu
entrouvert:wip/65943-idp-oidc-api-user-attr-reduction
entrouvert:wip/65122-user-deletion-message
entrouvert:wip/distutils
entrouvert:wip/63937-ldapobject-timeout
entrouvert:wip/62900-pm-personal-data-minimization-during-authz
entrouvert:wip/62889-pm-do-not-ask-again
entrouvert:wip/20690-Ajouter-automatiquement-des-role
entrouvert:hotfix/v3.81
entrouvert:wip/34829-Avoir-des-vues-backoffice-pour-q
entrouvert:wip/57499-role-members-through-soft-deletion
entrouvert:wip/61299-attribute-kinds-title
entrouvert:wip-paul/non-binary-title
entrouvert:wip/61196-manager-utiliser-le-nouveau-widg
entrouvert:wip/61188-UI-gestion-des-roles-impossible-
entrouvert:wip/50861-api-memberships-roles-ne-pas-ecr
entrouvert:wip/60493-ldap-enabled-option
entrouvert:wip/60488-auth-oidc-strategy-email
entrouvert:wip/locale-boolean-attr
entrouvert:wip/59414-test-59482
entrouvert:wip/58829-django-rbac-operation-model
entrouvert:wip/58948-missing-migration
entrouvert:wip/57663-Definir-une-permission-pour-acce
entrouvert:hotfix/v3.50
entrouvert:wip/47024-auth_oidc-faulty-provider-attribute-sharing-consent
entrouvert:wip/56850-IndexError-list-index-out-of-ran
entrouvert:wip/tox
entrouvert:wip/tel-account-simple
entrouvert:wip/53754-authentification-forcee-ForceAut
entrouvert:wip/54525-journal-expired-sessions
entrouvert:wip/54185-ldap-password-messages
entrouvert:hotfix/v3.34
entrouvert:wip/26277-remove-duplicated-jquery
entrouvert:hotfix/v3.32
entrouvert:wip/test-eo-jenkins-lib
entrouvert:hotfix/v3.2
entrouvert:hotfix/v2.100
entrouvert:wip/tel-account
entrouvert:wip/22687-pouvoir-utiliser-le-niveau-d-isolatoin-serializable-sur-postgresql
entrouvert:hotfix/v2.82
entrouvert:wip/48090-crash-migrations
entrouvert:wip/48352-custom-user-dans-free-text-searc
entrouvert:wip/tmp/paul-devinst-crash-troubleshooting
entrouvert:hotfix/v2.67
entrouvert:wip/36966-auth-oidc-signed-requests
entrouvert:hotfix/v2.64
entrouvert:hotfix/v2.62
entrouvert:hotfix/v2.47-email-validation
entrouvert:wip/importlib-resources-limit
entrouvert:wip/virtualenv-limit
entrouvert:wip/py3-nouvelle-vague
entrouvert:hotfix/v2.18
entrouvert:hotfix/v2.7
entrouvert:wip/33550-multifacteurs-2-haut-niv
entrouvert:wip/move-a2-rbac-tests
entrouvert:hotfix/v2.1.78
entrouvert:wip/33745-missing-migration-files
entrouvert:wip/misc_paul_ui_snapshots
entrouvert:wip/25645-roles-in-users-api
entrouvert:wip/26251-avatar-cadrage-cote-client-de-l-
entrouvert:wip/play-with-jenkinsfile
entrouvert:wip/25645-API-pour-obtenir-la-liste-des-roles-portes-par-un-utilisateur
entrouvert:wip/22865-Ne-plug-utiliser-pkg-resources-pour-charger-les-applications-incluses-dans-authentic
entrouvert:wip/stretch
entrouvert:wip/review-25045
entrouvert:wip/delete-render-block
entrouvert:wip/newpassword
entrouvert:wip/django111
entrouvert:release-2.1.20
entrouvert:release-2.1.19
entrouvert:release-2.1.18
entrouvert:release-2.1.15
entrouvert:release-2.1.14
entrouvert:release-2.1.13
entrouvert:debian-squeeze
No reviewers
Labels
Clear labels
No items
No Label
Milestone
Clear milestone
No items
No Milestone
Assignees
Clear assignees
No Assignees
3 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.
No due date set.
Dependencies
No dependencies set.
Reference: entrouvert/authentic#54
Reference in New Issue
No description provided.
Delete Branch "wip/77366-authn-manager-oidc-claim-edit"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Je vois ce que tu fais mais je me demande pourquoi le code suivant :
n'a pas l'effet escompté, c'est à dire ne vérifier que la permission admin_service sur l'objet OIDCClient, comment se retrouve-t-on à vérifier une permission sur OIDCClaim ?
Pour les modèles déclarés dans Authentiator.related_models ça parait normal, les vues génériques dans src/authentic2/apps/authenticators/views.py ne déclare par de permission, permission_model ou permission_pk_url_kwarg.
af5079fc91
tobc2bd2f48c
bc2bd2f48c
to58b8e9e7e8
58b8e9e7e8
to73fab16733
WIP: a2_rbac: allow management of subclasses by manager roles (#77366)to a2_rbac: allow management of subclasses by manager roles (#77366)Arf, je n’ai pas reçu de mail relatif à ton intervention ci-dessus dans la PR, que je découvre maintenant :
Je regarde.
Attention c’est coté auth_oidc que le souci se pose ici, pas idp_oidc.
Oui c’est justement l’objet de la PR, de faire en sorte que les MANAGED_CT puissent déclarer des dépendances sur lesquelles des permissions d’administration doivent aussi
etre définies.
J'ai testé en local et ça fonctionne comme attendu à l'édition et à la suppression d'un claim. Le code et le test me paraissent tout bon. J'ai essayé l'onglet « Ajout d'un rôle » mais ça plante avec le forbidden par contre, est-ce attendu ?
Ah zut, en testant en local je ne rencontrais aucun souci à l’ajout d’un rôle avant ou après application des changements, pour un usager qui est administrateur des moyens d’authentification. Je double-vérifie, pour voir si j’ai loupé un truc au premier essai, et j’ajoute le test qui correspond à cela.
73fab16733
tobaeaeed333
Je ne reproduis pas :/
Et j’ai rajouté deux lignes dans les tests qui vont de le sens de ce que je constate en local.
Oui je me suis mélangé les pinceaux, tout marche bien coté idp_oidc vis à vis du rôle "Administration des services"; mais donc la correction coté auth_oidc devrait ressembler à la correction coté idp_oidc, passer par les paramètres de classe permission_model et permission_pk_url_kwargs pour ne pas inventer une nouvelle solution pour le même problème. À tester mais ce serait :
Je confirme que ce patch corrige le problème (testé à l'instant sur un utilisateur n'ayant que le rôle "Administrateur des moyens d'authentification") :
J'ai changé la permission de search à admin parce que ça me parait plus conforme à ce qui est voulu (search n'a pas trop de sens ici, mais view pourra permettre de consulter sans modifier si jamais ça avait un sens un jour).
Bon, merci d’avoir regardé. L’application du patch en local ne plait pas au test de mon côté, et d’ailleurs j’avais déjà testé un truc du genre avant de proposer le contenu de la PR, sans succès.
Il y a un truc qui m’échappe, en local ça échoue parce qu’il semblerait que l’usager, qui endosse pourtant le role d’administration des moyens d’authentification, ne détienne pas la permission 'authenticators.admin_baseauthenticator' sur l’objet fournisseur OIDC en particulier.
Je vais dérouler le code à tete reposée, là je n’y arrive plus.
Est-ce qu'il n'y a pas une logique qui se produit au moment de la création/assignation du role et du coup c'est ce qui explique le plantage en local (l'agent existe déjà avec son rôle), là ou pour les tests, tout est créé sur le moment et ça passe ?
Je ne suis pas sur de comprendre de quoi tu parles, mais à ma connaissance rien de tel non.
Par contre la mise à jour des permissions liées aux roles d’administration ne se fait qu’en handler de signal post migrate django.
Ah ben voilà, c'est ce qui manquait je pense, je viens de tester avec un migrate et tout fonctionne chez moi, la gestion de rôle aussi bien que les claims dans l'interface. C'est tout bon au niveau fonctionnel de mon côté.
Ok, j’avais oublié de préciser cela oui, mes excuses.
La version de Benj a l’air infiniment plus simple, je vais reprendre au calme demain et voir ce que je loupe dans son application correcte en local pour faire passer le test.
Chez moi ça a marché tout de suite (mais je fais des migrate_schemas régulièrement sur mon tenant authentic.dev.publik.love c'est peut-être ça).
Est-ce le test écrit dans cette PR qui marche avec la modification que tu proposes ? Si oui, peux-tu pousser une autre branche stp ? De mon côté rien n’y fait, pas compris comment le test pourrait passer avec juste cette modif’.
J'ai poussé mon patch avec le test de Paul dans la PR #69, on peut fermer celle-ci.
Yes nickel, j’ai validé celle-là et je ferme celle-ci.
Pull request closed