2016-02-18 2 views
0

similaires au problème mentionné ci-dessous How to implement ACL at a group level? E.g. only teachers in school A can update school A's calendarComment implémenter la sécurité du printemps ACL pour partager un objet parmi un groupe d'utilisateurs sans créer de nombreuses entrées dans le tableau ACL_Entry

Je suis en train de résoudre ci-dessous scénario en utilisant la sécurité du printemps

acl

Nous avons un scénario pour partager le résultat des élèves à un groupe d'enseignants.Dans ce scénario, quand un enseignant se connecte, il ne peut voir le résultat que si l'enseignant a l'autorisation de lecture sur l'objet Result.Si nous devons partager le résultat avec un groupe d'enseignants. 10 membres dans le groupe avec permission de lecture, nous devons donner 10 entrées dans la table ACL_Entry. Ce serait compliqué car les entrées augmenteront Avec l'augmentation des membres du groupe et l'augmentation des permissions. Y a-t-il un autre moyen tel que si je partage le résultat au groupe il y aura seulement une entrée acl avec le groupe ayant l'autorisation de lecture sur l'objet résultat avec lequel objet.Pouvez-vous également expliquer avec l'exemple comment le schéma serait.

S'il vous plaît aider

Répondre

0

Pour résoudre le problème ci-dessus j'ai utilisé l'approche ci-dessous. J'ai des utilisateurs et une table user_role dans mon schéma. J'utilise db comme gestionnaire d'authentiques dans un contexte de sécurité.

schoolâ est déjà l'utilisateur de ma demande. Chaque fois qu'un enseignant est ajouté à l'écoleA Groupe .J'ajoute schoolA comme rôle à l'enseignant avec le rôle d'utilisateur.pendant le partage de l'objet de résultat au groupe schoolA avec autorisation de lecture. Je considère schoolA comme GrantedAuthoritySid au lieu de PrincpalSid. Donc la colonne principale sera fausse pour SchoolA sid dans la table ACL_SID. Chaque fois que l'enseignant se connecte en obtenant les résultats, nous vérifions si l'enseignant a l'autorisation de lecture sur l'objet result.but car le professeur a le rôle schoolA et le schoolA Je suis en mesure d'obtenir l'objet résultat lorsque l'enseignant se connecte. De cette façon, j'ai résolu mon problème ci-dessus.

0

double possible: spring-security-authorization-for-custom-usergroups

Si vous regardez cette question, vous trouverez cette solution possible:

J'utilise des groupes d'utilisateurs avec mécanisme ACL. Fondamentalement, je m'assure que lorsque la liste de contrôle d'accès est créée pour un objet, le propriétaire est défini. Ensuite, lorsqu'un autre utilisateur tente d'accéder à cet objet, les groupes du propriétaire sont vérifiés pour voir s'il y a correspondance. Cela signifie bien sûr que lorsque l'utilisateur change de groupe, l'objet «va avec lui».

Si vous ne souhaitez pas ce comportement, vous pouvez avoir la liste de contrôle d'accès de l'objet de groupe en tant que parent acl pour un objet sécurisé. Ensuite, lorsqu'un utilisateur change de groupe, vous devez définir les entrées correctes pour l'ACL de l'objet de groupe. De cette façon, l'objet sécurisé est lié au groupe d'utilisateurs et non à l'utilisateur lui-même.

Spring Security Domain Object Security (ACLs)

Ce sont en fait deux autres possibilités différentes de ce qui est décrit dans la question que vous LIÉ.

Il y a aussi une brève conversation dans les commentaires de la question que j'ai liée alors assurez-vous de le lire si vous êtes intrigué.

+0

Merci pour votre aide JIMI. J'ai utilisé le scénario mentionné dans ma réponse pour résoudre ce problème. Mais je veux obtenir la meilleure solution pour ce problème en essayant votre solution. Je n'ai pas eu beaucoup d'exemples liés à la gestion du partage de groupe en utilisant acl. Pourriez-vous partager un exemple qui explique les deux scénarios ci-dessus pour une meilleure compréhension de vos solutions. – anu