10
votes

Intégration GWT 2.0 avec Security Spring 3.0

J'ai utilisé GWT 2.0 depuis quelques jours. Donc, j'essaie de coder une application de base avec un formulaire de connexion et une page accessible uniquement si je suis connecté.

généralement dans mon application Web avec JSF par exemple, j'utilise Spring Security 3.0 pour configurer et sécuriser ce type d'application. Donc, j'ai décidé d'essayer de faire la même chose avec mon application GWT 2.0.

J'ai bien configuré la partie serveur de Spring Security. Donc de ma page de connexion GWT, je peux entrer mon identifiant / mot de passe et l'authentification via Spring Security est effectuée. La redirection de la page sécurisée est effectuée et je peux obtenir l'utilisateur connecté via un appel RPC au service de sécurité qui utilise le SecurityContext de Spring Security. Donc, je pense que cette partie est ok.

Mais j'ai un gros problème pour sécuriser les URL. En effet, je voudrais sécuriser la page pour restreindre l'accès au rôle spécifique, comme je le fais avec la sécurité du printemps habituellement.

Dans mon application GWT, j'utilise le motif MVP avec le contrôleur d'application central. Donc, j'ai une seule page et pour cette page, je vais différer des points de vue lorsque vous ajoutez #NAME_OF_VIEW à la fin de l'URL. Par exemple, pour accéder à ma page de connexion en mode développement, j'utilise l'URL suivante sur mon navigateur:

http: // 127.0.0.1:8888/fr.myapp.application.html?gwt.codevr=127.0.0.1:9997#Login

Une fois que je suis correctement connecté, je vais à la vue suivante:

http: // 127.0.0.1:8888/fr.myapp.application/application.html?gwt.codesvr=127.0.0.1:9997#PagesCageRésure

À cause de cela, je ne sais pas comment configurer la balise HTTP dans la sécurité du printemps et la définition de l'URL pour intercepter pour leur affecter des rôles spécifiques pour restreindre l'accès. En outre, je pense qu'il y aura un problème d'utiliser ces URL entre le mode de développement et un mode de production classique. Non?

Alors, quelqu'un aurait une idée de m'aider à configurer et à sécuriser mon application à l'aide de ces URL? ou en utilisant une autre technique pour sécuriser l'application avec la formulaire de connexion?

Merci d'avance pour votre aide.

sylvain.


0 commentaires

5 Réponses :


8
votes

Vous ne pouvez pas utiliser la sécurité au niveau de la page dans ce scénario, car vos vues sont modifiées au côté du client.

Le seul moyen d'implémenter une sécurité basée sur un rôle dans une telle application est d'utiliser un Sécurité de niveau de la méthode dans votre code côté serveur. Vous pouvez également restreindre l'accès à votre Application.html pour les utilisateurs non authentifiés selon vous, créant une page de connexion Spearate non-GWT (disons, login.html ).


0 commentaires

5
votes

Accepter avec @AxTavt - En général, vous ne pouvez pas utiliser la sécurité de niveau de page avec GWT, car il s'agit uniquement d'une seule page en ce qui concerne la sécurité de printemps.

Vous devriez faire ce qui suit -

  1. Sécurisez vos URL RPC. Si nécessaire, vous pouvez utiliser la sécurité au niveau de la méthode, car AXTAVT a souligné. Pour connecter RPC avec sécurité à ressort, remplacez la méthode ONAFTERREQUESTDESERIALISÉE (RPCREQUEST) dans votre servlet RPC. La méthode RPCREQUEST a des détails sur la méthode appelée et les paramètres réels passés à cette méthode. Ces informations sont suffisantes pour empêcher un utilisateur de mettre à jour les enregistrements d'un autre utilisateur.

  2. En cas d'erreur d'authentification ou d'autorisation dans votre service RPC, lancez les erreurs appropriées et envoyez-les au client. Dans votre client, créez un gestionnaire d'erreur centralisé et montrer le message à l'utilisateur.

  3. et enfin, en plus de la sécurité de printemps, vous voudrez peut-être vous protéger contre XSS et CSRF. Se référer à Sécurité des applications GWT pour Information additionnelle.


0 commentaires

2
votes

Regardez mon article de blog, http: / /technowobble.blogspot.com/2010/05/gwt-and-spring-security.html pour une application d'exemple intégrant la sécurité GWT et Spring. Espérons que cela vous donnera quelques idées sur la manière de mettre en œuvre vos besoins spécifiques.


0 commentaires

1
votes

Vous pouvez utiliser la sécurité de niveau de page, car votre module GWT peut être partagé par deux pages à l'aide de la méthode décrite ici par Rustyshelf ici: problème avec plusieurs points d'entrée dans le même module .

Résumé:

  1. créer une page, par exemple Login.html, qui n'utilisera que le login de jeton, permettra à quiconque d'y accéder et, par exemple, il doit contenir une balise div avec la connexion ID.
  2. Utilisez application.html, avec une balise div avec l'application ID, qui sera pour tout le reste et assurez-vous qu'il ne permettra pas d'utiliser le jeton de connexion et de refuser l'accès à tout utilisateur non autorisé.
  3. Demandez à votre module GWT charger la vue appropriée en fonction de la balise DIV située sur la page.

    Les DIV dans chacun des fichiers HTML doivent être utilisées uniquement pour déterminer quelle page HTML va être affichée (en Onmoduleload), mais la div devrait ensuite être supprimée, car le reste de l'application ne doit pas compter sur le Présence de la Div.

    Vous devez également utiliser Sécurité de la méthode pour sécuriser vos RPC, car ce qui précède sera simplement sécurisé l'URL que la plupart de votre candidature fonctionnera.


0 commentaires

0
votes

Je viens de terminer écrire un article sur la manière d'intégrer GWT avec la sécurité de printemps sans avoir la nécessité d'utiliser une page JSP.

Vous pouvez vérifier ici ici: http://crazygui.wordpress.com/2014/08/29/secure-Rest-Services-utilisation-spring-security/ J'ai aussi posté un exemple de travail sur GitHub.


0 commentaires