Gestion des droits d'accès aux dossiers

cancel
Showing results for 
Search instead for 
Did you mean: 
zomurn
Member II

Gestion des droits d'accès aux dossiers

Bonjour,

Je souhaiterais connaître les bonnes pratiques pour gérer les droits d'accès aux dossiers dans une arborescence alfresco.
Alors, je sais comment procéder mais ce n'est peut être pas la bonne façon de procéder…
Mon "problème" se pose lors d'actions génériques qui peut être déclenché par n'importe quel action utilisateur suite à un click.
Le souci c'est que cette action, coûte que coûte, doit (par ex.) lire le nom d'un dossier.
Et il se peut qu'un utilisateur n'ayant même pas les droits "consumer" sur ce dossier ne puisse indirectement executer cette action à cause du fameux : AccessDeniedException.
Pour résoudre ce problème 2 solutions que je connaisse :

1) Soit on donne l'accès "consumer" à l'utilisateur sur ce dossier : cela ne me plaît pas car je ne veux pas mélanger le technique du fonctionnel (cet utilisateur n'a aucune raison de voir ce dossier à travers le web client).
2) Soit j'ignore la personne loggée et j'execute le code de l'action en RunAs("admin") : cela ne me plaît pas car ça pollue le code de RunAs et on ignore complètement la couche de sécurité..

Donc voilà, 2 solutions mais aucune ne me plaît, quelle serait donc la bonne façon de faire s'il y a mieux (j'espère).

Merci Smiley Happy
2 Replies
rivarola
Active Member

Re: Gestion des droits d'accès aux dossiers

Bonjour,

C'est un problème assez fréquent lorsqu'on développe dans Alfresco. En général pour passer outre les droits dans le code Java on injecte dans le bean qui fait le traitement les services dont le nom commence par une petite lettre (ceux sous la couche de sécurité : nodeService au lieu de NodeService, fileFolderService au lieu de FileFolderService , etc.). Mais ça ne marche qu'avec des services de bas niveau. Si on fait ça sur un service de haut niveau, il utilisera à son tour un service de bas niveau comme le NodeService via les couches de sécurité et on retombe sur le problème de permissions. Dans ce cas on passe sans vergogne par un runAs "System". C'est ce que fait Alfresco très souvent dans son code source.
Sinon il y a d'autres bidouilles possibles : donner juste les droits ReadProperties sur le dossier (et pas Read) afin d'avoir le droit de lire les propriétés via le NodeService. Ou encode écrire une DynamicAuthority qui va donner des droits spécifiques non hérités.
zomurn
Member II

Re: Gestion des droits d'accès aux dossiers

Merci pour la réponse (je viens de la voir que maintenant), je garde cela dans mon sac Smiley Very Happy.