2017-10-10 9 views
1

J'essaie de trouver une solution pour implémenter l'authentification et l'autorisation dans mon application qui expose les services via une API REST et qui a pour le moment un client d'application Web:Comment sécuriser le client d'application JSF et le module API REST côté serveur


| Client d'application Web | -> JSF/Primefaces

| API REST | -> JAX-RS/Jersey

| API de logique métier et de persistance | -> EJB/JPA

| Base de données | -> MySQL


L'API REST expose plusieurs services et parmi eux un service de connexion. Je pensais à préserver la contrainte d'apatridie REST en lisant et en vérifiant les informations d'identification de l'utilisateur par rapport à mon mécanisme d'authentification (utilisé également derrière ce service de connexion mentionné ci-dessus) sur chaque requête client. Du côté de l'application Web, je peux vérifier l'accès aux ressources protégées (blocage de l'accès URI, activer/désactiver les boutons de l'interface graphique), utiliser les informations utilisateur et rôles associés en réponse à l'appel REST et conserver ces informations la session HTTP.

Maintenant, lorsque l'opération de certains utilisateurs est vérifiée et que l'on vérifie qu'elle est accordée au niveau de l'application Web, une deuxième vérification sera effectuée au niveau de l'API REST.

Pensez-vous que cette approche est correcte? J'essayais de comprendre s'il est possible d'éviter la double vérification des autorisations sur les deux couches.

En outre, j'évaluais l'introduction de Spring Security dans une ou deux de mes couches, puis-je en profiter?

Merci d'avance, bonne journée!

Répondre

0

Je pense que deux approches que vous pouvez prendre pour sécuriser votre applicaiton (auth aspect):

  1. mise à niveau http à https, vous pouvez vérifier le certificat à chaque fois que le client envoie une requête.
  2. authentifiez le processus de connexion avec l'authentification de base ou de digest (mieux digérer, si vous voulez sécuriser suffisamment) et renvoyez un jeton unique au client. Vérifiez le jeton lorsque chaque demande arrive.

Vous n'avez pas besoin de vérifier les informations d'identification de l'utilisateur pour chaque requête, il suffit de cocher le jeton.

+0

HTTPS et digest auth serait certainement de grandes améliorations, merci. Cependant, j'ai édité ma question en essayant de mieux expliquer mon problème: la solution "token" serait bonne pour l'authentification, mais qu'en est-il de l'autorisation? –

+0

J'ai raté que c'est une application web, vous pouvez utiliser la sécurité de printemps pour gérer l'authentification et l'autorisation côté serveur. –