Sécurisation des applications JAX-RS dans le conteneur web
Vous pouvez utiliser les services de sécurité disponibles dans le conteneur web pour sécuriser les ressources REST (Representational State Transfer). Vous pouvez configurer des mécanismes de sécurité qui définissent l'authentification des utilisateurs, la sécurité du transport, le contrôle des autorisations et les mappages des utilisateurs à des rôles.
Avant de commencer
Pour définir correctement des contraintes de sécurité, vous devez être familiarisé avec l'application et les ressources REST qu'elle expose. Ainsi, vous pouvez déterminer les rôles de sécurité appropriés nécessaires à l'application et les ressources individuelles qu'elle expose.
Pour expliquer la sécurisation d'une application REST, cette rubrique utilise l'exemple d'application REST, AddressBookApp.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app id="WebApp_1255468655347">
<display-name>Sample REST Web Application</display-name>
<servlet>
<servlet-name>AddressBookApp</servlet-name>
<servlet-class>com.ibm.websphere.jaxrs.server.IBMRestServlet</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.test.AddressBookApplication</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>AddressBookApp</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
Dans cet exemple, le mappage de servlet indique les ressources REST
REST gérée sous le répertoire /app_root_context/rest, où app_root_context correspond à ce que vous configurez au cours de l'installation de l'application. Le contexte racine par défaut est /. Vous devez activer la sécurité pour WebSphere Application Server.
Pourquoi et quand exécuter cette tâche
Vous pouvez utiliser le conteneur web pour appliquer l'authentification et des contraintes d'autorisation à l'application REST exécutée dans l'environnement du serveur d'applications. L'authentification est une condition de sécurité de base pour les ressources REST de gestion qui nécessitent un niveau minimum de sécurité et une sécurité renforcée en fonction de l'identité de l'appelant.
- Authentification des utilisateurs dans l'application en utilisant l'authentification de base HTTP ou la connexion à l'aide d'un formulaire.
- Configuration de l'application pour utiliser un canal SSL pour le transport lors de l'appel des ressources REST.
- Définition des contraintes d'autorisation par rôle dans les modèles de ressources REST.
- Implémentation de l'utilisation programmatique de l'objet SecurityContext annoté pour déterminer l'identité et les rôles des utilisateurs.
Procédure
Résultats
Après avoir défini les contraintes de sécurité, l'accès aux ressources REST définies dans l'application n'est possible que si l'utilisateur est authentifié. En outre, vous avez appliqué des contraintes de rôle à des modèles d'URL de ressource pour accéder par rôle aux ressources.
Exemple
<web-app id="WebApp_1255468655347">
<display-name>Sample REST Web Application</display-name>
<servlet>
<servlet-name>AddressBookApp</servlet-name>
<servlet-class>com.ibm.websphere.jaxrs.server.IBMRestServlet</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.test.AddressBookApplication</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>AddressBookApp</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<security-constraint id="SecurityConstraint_1">
<web-resource-collection id="WebResourceCollection_1">
<web-resource-name>AddressBookApp</web-resource-name>
<description>Protection area for Rest Servlet</description>
<url-pattern>/rest/addresses</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint id="AuthConstraint_1">
<description>Role1 for this rest servlet</description>
<role-name>Role1</role-name>
</auth-constraint>
<user-data-constraint id="UserDataConstraint_1">
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<security-constraint id="SecurityConstraint_2">
<web-resource-collection id="WebResourceCollection_2">
<web-resource-name>AddressBookApp</web-resource-name>
<description>Protection area for Rest Servlet</description>
<url-pattern>/rest/addresses/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint id="AuthConstraint_2">
<description>Role2 for this rest servlet</description>
<role-name>Role2</role-name>
</auth-constraint>
<user-data-constraint id="UserDataConstraint_1">
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<security-role id="SecurityRole_1">
<description>This is Role1</description>
<role-name>Role1</role-name>
</security-role>
<security-role id="SecurityRole_2">
<description>This is Role2</description>
<role-name>Role2</role-name>
</security-role>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/logon.jsp</form-login-page>
<form-error-page>/logonError.jsp</form-error-page>
</form-login-config>
</login-config>
</web-app>
Que faire ensuite
Utilisez la console d'administration pour administrer la sécurité de l'application JAX-RS.