17.5. Utilisation de la Sécurité basée-rôle dans les Servlets
Pour ajouter la sécurité à un servlet, vous mappez chaque servlet à un type d'URL et créez des contraintes de sécurité sur les types d'URL qui doivent être sécurisés. Les contraintes de sécurité limitent l'accès des URL aux rôles. L'authentification et l'autorisation sont gérées par le domaine de sécurité spécifié dans
jboss-web.xml
du WAR.
Prérequis
Avant d'utiliser la sécurité basée-rôles dans une servlet, le domaine de sécurité utilisé pour authentifier et autoriser l'accès doit être configuré sur la plateforme JBoss EAP 6.
Procédure 17.2. Ajout de la Sécurité basée-rôle dans les Servlets
Ajout de mappages entre les types d'URL et les servlets.
Utiliser les éléments<servlet-mapping>
du fichierweb.xml
pour mapper les servlets individuels à des types d'URL. L'exemple suivant mappe le serveur nomméDisplayOpResult
au type d'URL/DisplayOpResult
.<servlet-mapping> <servlet-name>DisplayOpResult</servlet-name> <url-pattern>/DisplayOpResult</url-pattern> </servlet-mapping>
Ajout des contraintes de sécurité aux types d'URL.
Pour mapper le type d'URL avec une contrainte de sécurité, utilisez un<security-constraint>
. L'exemple suivant limite l'accès d'un type d'URL/DisplayOpResult
afin qu'il soit accessible aux principaux ayant pour rôleeap_admin
. Le rôle doit être présent dans le domaine de sécurité.<security-constraint> <display-name>Restrict access to role eap_admin</display-name> <web-resource-collection> <web-resource-name>Restrict access to role eap_admin</web-resource-name> <url-pattern>/DisplayOpResult/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>eap_admin</role-name> </auth-constraint> </security-constraint> <security-role> <role-name>eap_admin</role-name> </security-role> <login-config> <auth-method>BASIC</auth-method> </login-config>
Vous aurez besoin d'indiquer la méthode d'authentification, qui peut être une des suivantes :BASIC, FORM, DIGEST, CLIENT-CERT, SPNEGO.
. Cet exemple utilise l'authentificationBASIC
.Indiquer le domaine de sécurité et le fichier
jboss-web.xml
du WAR.Ajouter le domaine de sécurité au fichierjboss-Web.xml
du WAR afin de connecter les servlets au domaine de la sécurité configuré sachant comment authentifier et autoriser les principaux selon les contraintes de sécurité. L'exemple suivant utilise le domaine de sécurité appeléacme_domain
.<jboss-web> ... <security-domain>acme_domain</security-domain> ... </jboss-web>
Exemple 17.1. Exemple web.xml
avec la sécurité basée rôle configurée.
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>Use Role-Based Security In Servlets</display-name> <welcome-file-list> <welcome-file>/index.jsp</welcome-file> </welcome-file-list> <servlet-mapping> <servlet-name>DisplayOpResult</servlet-name> <url-pattern>/DisplayOpResult</url-pattern> </servlet-mapping> <security-constraint> <display-name>Restrict access to role eap_admin</display-name> <web-resource-collection> <web-resource-name>Restrict access to role eap_admin</web-resource-name> <url-pattern>/DisplayOpResult/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>eap_admin</role-name> </auth-constraint> </security-constraint> <security-role> <role-name>eap_admin</role-name> </security-role> <login-config> <auth-method>BASIC</auth-method> </login-config> </web-app>