Références des rôles de sécurité dans les applications Web

Les développeurs d'applications Web ou les fournisseurs de beans EJB (Enterprise JavaBeans) doivent employer un nom de rôle (role-name) dans le code lorsqu'ils utilisent les interfaces de programme d'application (API) Java™ Platform, Enterprise Edition (Java EE) de sécurité par programmation disponibles, isUserInRole(String roleName) et isCallerInRole(String roleName).

Les rôles utilisés dans l'environnement d'exécution déployé peuvent ne pas être connus tant que l'application Web et les composants EJB (par exemple, les fichiers WAR et les fichiers ejb-jar.xml) ne sont pas assemblés dans un fichier EAR. De ce fait, les noms de rôle utilisés dans l'application web ou le code des composants EJB sont des noms "logiques" que l'assembleur d'applications mappe aux rôles réels de l'environnement d'exécution au cours de l'assemblage d'application. Les références de rôle de sécurité fournissent un niveau d'adressage qui empêche le composant d'application Web et les développeurs d'EJB de connaître les rôles exacts dans l'environnement d'exécution.

La définition des rôles logiques et le mappage vers les rôles de l'environnement d'exécution réel sont spécifiés dans l'élément security-role-ref des descripteurs d'application web et de déploiement du fichier JAR d'EJB, web.xml et ejb-jar.xml, respectivement. L'outil d'assemblage permet de définir le nom des rôles et de les mapper vers les rôles d'exécution réels dans l'environnement avec l'élément de liaison des rôles.

L'exemple de code suivant concerne l'élément security-role-ref tiré d'un descripteur de déploiement d'EJB ejb-jar.xml.
... <enterprise-beans>
... <entity>
<ejb-name>AardvarkPayroll</ejb-name>
<ejb-class>com.aardvark.payroll.PayrollBean</ejb-class>
...
<security-role-ref>
<description>
Ce rôle doit être attribué aux employés du service de paie. Les membres de ce rôle ont accès à l'enregistrement de la paie de chacun. Le rôle a été lié au rôle du service de paie (payroll-department). Ce rôle doit être attribué aux employés du service de paie. Les membres de ce rôle ont accès à tous les enregistrements de paie. Le rôle a été lié au rôle du service de paie (payroll-department).
</description> <role-name>payroll</role-name> 
<role-link>payroll-department</role-link>
</security-role-ref>
 ... 
</entity>
 ... 
</enterprise-beans>

In the previous example, the string payroll, which appears in the <role-name> element, is what the EJB provider uses as the argument to the isCallerInRole() API. The <role-link> element is what ties the logical role to the actual role used in the run-time environment.

Notez que pour les beans enterprise, l'élément security-role-ref doit apparaître dans le descripteur de déploiement, même si le nom du rôle logique est identique au nom réel dans l'environnement.

Les règles pour les composants d'applications Web sont légèrement différentes. Si aucun élément de référence de rôle de sécurité correspondant à un élément de rôle de sécurité n'a été déclaré, le conteneur doit par défaut vérifier l'argument de l'élément du nom de rôle par rapport à la liste des éléments de rôle de sécurité pour l'application Web. La méthode isUserInRole se base sur la liste pour déterminer si l'appelant est mappé vers un rôle de sécurité. Le développeur doit être conscient du fait que l'utilisation de ce mécanisme par défaut risque de limiter la flexibilité de modification des noms de rôle dans l'application sans devoir recompiler le servlet effectuant l'appel.

Pour plus de détails sur la spécification, reportez-vous à la spécification EJB 2.0 et Servlet 2.3 dans la rubrique "Sécurité : Ressources d'apprentissage".


Icône indiquant le type de rubrique Rubrique de concept



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=usec_csec
Nom du fichier : usec_csec.html