2 votes

Autorisation Java EE 6 : restriction au propriétaire

Supposons que je dispose d'un modèle simple, tel que "Record" :

@Model
public class Record {
  private Principal owner; // presume getter/setters as well
}

Ensuite, je veux avoir un simple EJB qui contrôle la création et la suppression des enregistrements. Pour les besoins de l'argumentation, ne nous préoccupons que de la suppression :

@EJB
@Named
@Stateless
public class RecordMgr {
  @PersistenceContext private EntityManager em;

  public void delete(Record r) {
    em.remove(r);
  }
}

Je veux restreindre l'accès à RecordMgr#delete(Record r) aux administrateurs et au propriétaire : en d'autres termes, les administrateurs et les personnes qui ont créé l'objet, et eux seuls, peuvent le supprimer. Je ne vois pas comment réaliser ces deux objectifs avec la sécurité déclarative. Quelle est la bonne façon d'aborder ce problème ?

0voto

Mikko Maunu Points 20360

Vous ne pouvez pas le faire avec la sécurité déclarative, car il n'y a aucun moyen d'établir une connexion entre le rôle dans @RolesAllowed et l'utilisateur qui a créé l'entité.

Le seul moyen est la sécurité programmatique et la vérification que l'utilisateur est le créateur du haricot ou l'administrateur, ou les deux.

La seule partie où vous pourriez utiliser la sécurité déclarative est de lister les rôles qui sont autorisés à créer un tel enregistrement, et le rôle d'administrateur. Ensuite, il faut vérifier par programme que le rôle de l'utilisateur actuel est administrateur ou que l'utilisateur actuel a créé l'enregistrement. Dans tous les cas, toute la logique de la sécurité déclarative est alors dupliquée dans la sécurité programmatique.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X