Bonjour,
J'ai réussi à avoir des services REST sécurisés en java en utilisant des filtres appelés pour chaque requête REST pour tester que l'utilisateur est bien authentifié (utilisation d'un jeton JWT signé) et qu'il a le droit d'accéder au service REST (filtrage en fonction de roles).

Dans mon web.xml j'ai seulement une servlet jersey définie comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
<servlet>
    <servlet-name>jersey-serlvet</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <!-- Déclaration des filtres pour vérifier que l'utilisateur est bien authentifié (avec token)
  	et qu'il est authorisé (avec Role) -->
    <init-param>
        <param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name>
        <param-value>
        	com.testAngularRestToken.filter.AuthenticationFilter
        	com.testAngularRestToken.filter.AuthorizationFilter
        </param-value>
    </init-param>
    <!-- Déclaration des packages à gérer (ici les controlleurs qui traitent les requêtes REST 
    ainsi que les filtres) -->
    <init-param>  
      <param-name>jersey.config.server.provider.packages</param-name>  
      <param-value>com.testAngularRestToken.restController;com.testAngularRestToken.filter</param-value>  
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
 
  <servlet-mapping>
	<servlet-name>jersey-serlvet</servlet-name>
	<url-pattern>/*</url-pattern>
  </servlet-mapping>
J'ai une page HTML/JS pour l'authentification (connexion.html) ainsi qu'une page HTML/JS pour le lancement des requêtes REST (home.html). Je voudrais les mettre (avec les .js associés) dans mon projet sous src/main/webapp/WEB-INF.

Je voudrais maintenant que l'ensemble fonctionne ensemble comme ceci:
- L'utilisateur accède à http://localhost:8080/TestAngularRestToken -> Il arrive sur la page de connexion
- D'abord l'utilisateur doit se connecter -> A la validation, appel au service REST en POST /rest/authenticate qui retourne un jeton qui sera ensuite mis dans le header de chaque requête REST
- Une fois connecté, l'utilisateur est redirigé vers home.html (le jeton devra être connu ici pour les appels REST)
- Si l'utilisateur fait une requête REST et que le jeton n'est pas ou plus valide, alors on doit le rediriger vers la page de connexion
- Si l'utilisateur fait une requête REST sur un service pour lequels il n'a pas les droits, alors il reste sur la page home.html mais un message lui sera affiché

Je ne sais pas si je peux tout faire avec la servlet jersey ou bien s'il me faudrait par exemple une autre servlet personnelle.

Questions:
- Je n'arrive pas à faire que la page connexion.html soit affiché lors de l'appel à http://localhost:8080/TestAngularRestToken alors que j'ai défini ceci dans web.xml:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
<welcome-file-list>
        <welcome-file>WEB-INF/connexion.html</welcome-file>
</welcome-file-list>
Comment faire pour que ca marche?
- Comment gérer les redirections dont j'ai besoin (redirection vers home.html une fois connecté, redirection vers la page de connexion si jeton pas ou plus valide...)?
- Comment avoir des retours sur les erreurs coté client (HTML/JS) car je n'ai qu'une page affichant ceci par exemple si le jeton n'existe pas ou n'est plus valide:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
type Rapport d''état
message Unauthorized
description La requête nécessite une authentification HTTP.
Je voudrais des messages plus explicite sur l'erreur pour pouvoir les afficher au client lors du retour de l'appel au service.

Merci d'avance de votre aide.