Ce billet fait suite à celui intitulé "Exemple de webservice rest avec jersey". En fait, la procédure montrée ici est valable pour tous les webservices. Elle n'est pas propre à ceux qui utilisent l'API Jersey.
La première chose à prendre en compte pour la sécurité est d'utiliser HTTPS pour crypter les communications de bout en bout.
Pour utiliser l'authentification, nous allons définir certains aspects sécuritaires dans le web.xml.
On avons spécifié les contraintes de sécurité, c'est-à-dire quelles pages (ou ressources) doivent être sécurisées. Ceci est fait avec
<url-pattern>/citation/*
</url-pattern>
La première chose à prendre en compte pour la sécurité est d'utiliser HTTPS pour crypter les communications de bout en bout.
Pour utiliser l'authentification, nous allons définir certains aspects sécuritaires dans le web.xml.
<web-app>
<servlet>
<servlet-name>RestServlet</servlet-name>
<servlet-class>
com.sun.jersey.spi.container.servlet.ServletContainer
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>RestServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<security-constraint>
<web-resource-collection>
<web-resource-name> Citation </web-resource-name>
<url-pattern>/citation/*</url-pattern>
<http-method>GET</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>USERS</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
<security-role>
<role-name>USERS</role-name>
</security-role>
</web-app>
Il y a plusieurs manières de procéder à l'authentification :
- Basic authenication : une popup demande de s'identifier
- Form authenication : on propose une page de login
- Form authenication avec SSL : une des deux solutions précédentes, mais les informations sont cryptées par le protocole HTTPS.
Dans cet exemple, nous avons utilisé d'authentification basic: <auth-method>BASIC</auth-method>
Il nous reste maintenant à définir un rôle sur le serveur. Avec Tomcat, on le (ou les) spécifie dans le fichier tomcat-users.xml du répertoire [TOMCAT_HOME]/conf.
Il nous reste maintenant à définir un rôle sur le serveur. Avec Tomcat, on le (ou les) spécifie dans le fichier tomcat-users.xml du répertoire [TOMCAT_HOME]/conf.
<tomcat-users>
<role rolename="users"/>
<user password="user" roles="users" username="user"/>
[...]
</tomcat-users>
Dans le cas où l'authentification se fait par l'intermédiaire d'un formulaire de login, voici les quelques modifications à apporter.
Dans le web.xml, il faut modifier la section <login-config>.
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/logon.jsp</form-login-page>
</form-login-config>
</login-config>
Créer un formulaire de login.<html>
<head>
<title>Login Page</title>
</head>
<h2>Login</h2>
<br><br>
<form action="j_security_check" method=post>
<p><strong>Login: </strong>
<input type="text" name="j_username" size="25">
<p><p><strong>Password: </strong>
<input type="password" size="15" name="j_password">
<p><p>
<input type="submit" value="Submit">
<input type="reset" value="Reset">
</form>
</html>
Note: l'action du formulaire doit se nommer j_security_check. De même les champs Login et Password doivent avoir pour Name j_username et j_password.
Aucun commentaire:
Enregistrer un commentaire