Annotations dynamiques de la sécurité de servlet

Lorsque vous utilisez les API de programmation pour ajouter ou créer un servlet, vous pouvez mettre à jour de façon dynamique les annotations de sécurité RunAs, declareRoles et ServletSecurity par le biais des méthodes setRunAsRole(), declareRoles() et setServletSecurity() respectivement.

Remarque : La prise en charge de la mise à jour dynamique des annotations de sécurité de servlet RunAs, declareRoles et ServletSecurity constitue une nouveauté dans cette édition de WebSphere Application Server.

Lors du démarrage d'une application, le conteneur Web inspecte tous les servlets comportant les annotations RunAs, declareRoles et ServletSecurity, puis définit ces annotations sur la méthode setServletSecurity() de l'annotation ServletRegistration. Le conteneur Web demande au composant de sécurité d'inspecter toutes les annotations ServletRegistration comportant des modèles d'URL et des contraintes de sécurité. Le composant de sécurité détermine ensuite si un modèle d'URL est défini dans le descripteur de déploiement. Si une correspondance exacte est déjà définie dans le descripteur de déploiement, les contraintes de sécurité et le rôle RunAs dans le modèle d'URL du descripteur de déploiement sont utilisés à la place des données dynamiques.

Eviter les incidents Eviter les incidents: Si les annotations de sécurité dynamique declareRoles, setRunAs et rolesAllowed sont utilisées, le nom de rôle doit être prédéfini via le descripteur de déploiement ou les annotations declareRoles et/ou RunAs dans la classe de servlet. Pendant le déploiement, vous pouvez utiliser la console d'administration pour mapper un utilisateur ou un groupe vers ce rôle.gotcha

Si l'annotation dynamique de sécurité contient une correspondance de modèle d'URL exacte pour l'annotation ServletSecurity, la contrainte de sécurité du modèle d'URL dans l'annotation dynamique de sécurité a la priorité. De même, si vous appelez la méthode setServletSecurity() plusieurs fois à l'aide du même modèle d'URL, la dernière a la priorité.

  • ServletRegistration.Dynamic.setRunAsRole(String roleName) définit le nom du rôle RunAs pour cet enregistrement de servlet.
  • ServletContext.declareRoles(String roleNames) déclare les noms de rôle qui sont testés pour la méthode isUserInRole().
  • ServletRegistration.Dynmaic.setServletSecurity(ServletSecurityElement constraint) définit ServletSecurityElement pour cet enregistrement de servlet.
Remarque : Lorsque la propriété du système d'authentification Web, com.ibm.wsspi.security.web.webAuthReq, est définie sur persisting, vous pouvez vous connecter à une URL non protégée si un nom d'utilisateur et un mot de passe valides sont fournis.

Les deux exemples ci-dessous permettent de définir les contraintes de sécurité et le rôle RunAs pour les servlets dynamiques à l'aide de la méthode setServletSecurity().

Dans cet exemple, tous les éléments HTTP nécessitent l'appartenance au rôle Employee (Employé), à l'exception de la méthode PUT. Pour la méthode PUT, l'élément <auth-constraint> nécessite l'appartenance au rôle Manager et TransportGuarantee a pour valeur CONFIDENTIAL.
HttpConstraintElement constraint = new HttpConstraintElement(TransportGuarantee.NONE,
new String[]{"Employee"});
List<HttpMethodConstraintElement> methodConstraints =
new ArrayList<HttpMethodConstraintElement>();
methodConstraints.add(new HttpMethodConstraintElement("PUT",
new HttpConstraintElement(TransportGuarantee.CONFIDENTIAL, new String[]{"Manager"})));
ServletSecurityElement servletSecurity =
new ServletSecurityElement(constraint, methodConstraints);
Dans cet exemple, toutes les méthodes HTTP sont autorisées à l'exception des méthodes CUSTOM et GET. Pour la méthode CUSTOM, l'élément <auth-constraint> nécessite l'appartenance au rôle Manager. Pour la méthode GET, l'élément <auth-constraint> nécessite l'appartenance au rôle Employee (Employé), et TransportGuarantee a pour valeur CONFIDENTIAL.
HttpConstraintElement constraint = new HttpConstraintElement();
List<HttpMethodConstraintElement> methodConstraints = 
new ArrayList<HttpMethodConstraintElement>();
methodConstraints.add(new HttpMethodConstraintElement("CUSTOM", 
new HttpConstraintElement(TransportGuarantee.NONE, new String[]{"Manager"})));
methodConstraints.add(new HttpMethodConstraintElement("GET", 
new HttpConstraintElement(TransportGuarantee.CONFIDENTIAL, new String[]{"Employee"})));
ServletSecurityElement servletSecurity = new ServletSecurityElement(constraint, 
methodConstraints);

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=csec_dynamic_annotations
Nom du fichier : csec_dynamic_annotations.html