Accès aux EJB

Accès aux EJB

Une fois l’authentification effectuée, le contexte de sécurité est propagé d’un conteneur à l’autre : ● du conteneur client, pour un client lourd, vers le conteneur EJB ; ● du conteneur JSP vers le conteneur EJB ; ● d’un conteneur EJB vers un autre conteneur EJB. Au niveau de l’EJB, il est possible de gérer les autorisations d’accès aux méthodes. Il  faut que les différents conteneurs utilisent le même contexte d’autorisation. Cela peut être vérifié en affichant les  noms JNDI. java:comp namespace of the Chap 8 – Sécurité Web.war application: +- UserTransaction[link -> UserTransaction] (class: javax.naming.LinkRef) +- env (class: org.jnp.interfaces.NamingContext) | +- security (class: org.jnp.interfaces.NamingContext) | | +- realmMapping[link -> java:/jaas/exemple-eni] (class: javax.naming.LinkRef) | | +- subject[link -> java:/jaas/exemple-eni/subject] (class: javax.naming.LinkRef) | | +- securityMgr[link -> java:/jaas/exemple-eni] (class: javax.naming.LinkRef) | | +- security-domain[link -> java:/jaas/exemple-eni] (class: javax.naming.LinkRef) Ejb Module: Chap 8 – EJB2.jar java:comp namespace of the Calculette bean: +- env (class: org.jnp.interfaces.NamingContext) | +- security (class: org.jnp.interfaces.NamingContext) | | +- subject[link -> java:/jaas/exemple-eni/subject] (class: javax.naming.LinkRef) | | +- security-domain[link -> java:/jaas/exemple-eni] (class: javax.naming.LinkRef) java: Namespace … +- ConnectionFactory (class: org.jboss.mq.SpyConnectionFactory) +- jaas (class: javax.naming.Context) | +- exemple-eni (class: org.jboss.security.plugins.SecurityDomainContext) | +- other (class: org.jboss.security.plugins.SecurityDomainContext) | +- HsqlDbRealm (class: org.jboss.security.plugins.SecurityDomainContext) | +- jbossmq (class: org.jboss.security.plugins.SecurityDomainContext) | +- JmsXARealm (class: org.jboss.security.plugins.SecurityDomainContext)

 Gestion des autorisations sur les EJB 2

Les extraits de code et de fichiers xml sont issus du projet « Chap 8 ­EJB2 ». Le projet Web « Chap 8 ­ Sécurité Web »  permet  de  tester  l’EJB.  Vous  devez  déployer  les  deux  projets  dans  votre  serveur.  L’URL  de  test  est  :  http://localhost:8080/secu. Pour être authentifié, vous devez d’abord cliquer sur le lien Administration du site, puis  choisir EJB2 dans la liste déroulante. Calculette Calculette fr.eni.editions.ejb2.secu.CalculetteHome fr.eni.editions.ejb2.secu.Calculette fr.eni.editions.ejb2.secu.CalculetteLocalHome fr.eni.editions.ejb2.secu.CalculetteLocal fr.eni.editions.ejb2.secu.CalculetteSession Stateless Container admin admin Descripteur de déploiement ejb­jar.xml –  … admin … Ce  premier  extrait  du  fichier  ejb­jar.xml  nous  permet  de  déclarer  les  références  aux  rôles  de  sécurité.  L’élément   contient le mapping entre : ●  qui est le nom du rôle qui est utilisé dans l’EJB, en gestion programmée de l’authentification ; ●  correspond à un des rôles définis dans la balise . L’élément  contient la définition des rôles qui seront utilisés par le composant. Les rôles sont  définis dans la balise  qui contient : ●  correspond à une description éventuelle du rôle ; ●  correspond à un rôle de sécurité. Ensuite, une autorisation est mise en place pour les méthodes de l’EJB au sein de l’élément .  Le  mapping  entre  les  autorisations  de  méthodes  et  les  rôles  de  sécurité  est  effectué  dans  la  balise  . … ]]> Calculette Remote additionner int int admin ]]> Calculette Remote Tag – 3 – soustraire int int … L’élément  comporte les éléments fils : ●  contient un texte optionnel décrivant le mapping ; ●  rôle de sécurité permis pour utiliser la méthode. Cette balise peut être présente plusieurs fois,  ou être absente ; ●  précise que la méthode n’est pas liée à un rôle particulier ; ●  contient le nom de la méthode. Peut aussi contenir un nom générique type * pour toutes les  méthodes de l’EJB, ou get* pour tous les getters ; ●  nom de l’EJB ; ●  distingue le type d’interface pour la méthode : Remote, Home, Local ou LocalHome ; ●  contient la liste des  types des paramètres de la méthode, ce qui permet de préciser une  signature particulière en cas de surcharge de la méthode. Le domaine de sécurité a été ajouté au fichier jboss.xml. … java:/jaas/exemple-eni Calculette ejb2/remote/Calculette ejb2/local/Calculette … Dans l’exemple, l’EJB CalculetteBean possède deux méthodes : additionner(…) et soustraire(…). Pour accéder à  ces méthodes, il faut que l’utilisateur soit authentifié. La méthode additionner(…) peut être invoquée quel que soit  l’utilisateur, tandis que la méthode soustraire(…) n’est utilisable que par un utilisateur ayant un profil « admin ». Le  conteneur d’EJB lève une exception si les conditions de sécurité ne sont pas respectées lors de l’invocation  d’une  méthode, y compris sur les méthodes du cycle de vie. Descripteur de déploiement jboss.xml – 4 – Tag

 Gestion des autorisations sur les EJB 3

Les extraits de code et de fichiers xml sont issus du projet « Chap 8 ­EJB3 ». Le projet Web « Chap 8 ­ Sécurité Web »  permet  de  tester  l’EJB.  Vous  devez  déployer  les  deux  projets  dans  votre  serveur.  L’URL  de  test  est  :  http://localhost:8080/secu. Pour être authentifié, vous devez d’abord cliquer sur le lien Administration du site, puis  choisir EJB3 dans la liste déroulante. … @Local @Stateless @LocalBinding(jndiBinding= »ejb3/local/Calculette ») @SecurityDomain(« exemple-eni ») public class CalculetteBean implements Calculette { @Unchecked public int additionner(int a, int b) { return a+b; } @RolesAllowed({« admin »}) public int soustraire(int a, int b) { return a-b; } } Nous  retrouvons  les  configurations  équivalentes  aux  fichiers  de  déploiement  des  EJB  2,  mais  exprimées  par  les  annotations. Dans notre exemple le fichier ejb­jar.xml n’est pas présent. La description de configuration s’en trouve allégée, il n’y a plus besoin, entre autres, de définir les signatures. Les annotations utilisées ici sont : ● @securityDomain : contient le domaine de sécurité. Il s’agit d’une annotation JBoss  facultative. Si elle n’est  pas  présente,  le  fichier  jboss.xml  doit  déclarer  le  domaine  de  sécurité  dans  l’élément  .  Attention, la valeur de l’annotation n’est pas le nom JNDI mais uniquement le nom du domaine. Le nom JNDI  du domaine est : java:/jaas/exemple-eni, nous utilisons donc uniquement exemple-eni. ● @Unchecked : correspond à l’élément  du fichier de déploiement ejb­jar.xml. La méthode n’est pas  liée à l’authentification sur un rôle particulier. ● @RolesAllowed : correspond à l’élément  du  fichier ejb­jar.xml. La valeur de l’annotation contient  donc, les rôles autorisés à utiliser la méthode. La valeur de cette annotation est un tableau de String, d’où  l’utilisation des accolades pour le passage de la valeur. Si plusieurs rôles sont définis, ils sont dans l’accolade,  séparés par des virgules, par exemple @RoleAllowed({« admin », »gestion »}).

Formation et coursTélécharger le document complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *