IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Java Discussion :

Spring Security avec JSF (sans Maven)


Sujet :

Spring Java

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2011
    Messages : 7
    Points : 1
    Points
    1
    Par défaut Spring Security avec JSF (sans Maven)
    Bonjour tout le monde,

    je développe une application Web JavaEE sous NetBeans et je voudrais la sécuriser au début avant de se lancer sur le développement des autres parties. J'ai suivi ce tutoriel pour la génération des entités (from JavaDB) ainsi que la création des pages jsf (+ PrimeFaces 5.0) : http://miageprojet2.unice.fr/Intranet_de_Michel_Buffa/Cours_composants_distribués_pour_l'entreprise_%2f%2f_EJB_2009/TP1_2011_EJB_3.1%2f%2fJPA%2f%2fJSF2.
    j'ai vu des tutoriels avec Spring Security mais la plupart sont avec Spring MVC ou Maven, et je pense que ce n'est pas mon cas ! (la plupart des tutos demandent des fichiers tels que : pom.xml, servlet-dispatcher.xml, applicationcontext.xml, ...)
    Qu'elle est la meilleure solution pour sécuriser mon application ? est-ce que je peux utiliser Spring Security ?

    merci de vos suggestions et solutions

  2. #2
    Membre éprouvé
    Avatar de Cafeinoman
    Homme Profil pro
    Couteau suisse d'une PME
    Inscrit en
    Octobre 2012
    Messages
    628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Couteau suisse d'une PME

    Informations forums :
    Inscription : Octobre 2012
    Messages : 628
    Points : 1 256
    Points
    1 256
    Par défaut
    Très honnêtement, apprend plutôt les bases de Maven, de toute façon tu en aura besoin plus tard. Sinon, Spring sécu sans le reste de Spring, ce n'est peu être pas le mieux... Regarde du côté de JAAS, tu trouveras plus facilement ton bonheur je pense.
    «Dieu ne joue pas aux dés.» - Albert Einstein. Et pan! 30 ans de retard dans la théorie quantique!
    «Tout n'est pas politique, mais la politique s'intéresse à tout.» - Nicolas Machiavel. Et surtout à ceux qui ne s'y intéressent pas.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2011
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    merci infiniment, je vais voir ce que ça donne.
    je prendrai compte du conseil pour les prochaines applications (faute de temps).
    Merci

  4. #4
    Membre éprouvé
    Avatar de Cafeinoman
    Homme Profil pro
    Couteau suisse d'une PME
    Inscrit en
    Octobre 2012
    Messages
    628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Couteau suisse d'une PME

    Informations forums :
    Inscription : Octobre 2012
    Messages : 628
    Points : 1 256
    Points
    1 256
    Par défaut
    Si vraiment tu n'as pas le temps, apprendre Spring sécurité n'est pas la meilleur option... En supposant que tu utilise Tomcat, jette un œil ici (en anglais), ou fait une petite recherche sur JAAS pour ton serveur. Franchement, c'est plus simple, et ça t'évitera de te taper tous les trucs non-standards de Spring... (Non, je n'aime pas Spring).

    Et n'hésite pas a poser d'autres questions.
    «Dieu ne joue pas aux dés.» - Albert Einstein. Et pan! 30 ans de retard dans la théorie quantique!
    «Tout n'est pas politique, mais la politique s'intéresse à tout.» - Nicolas Machiavel. Et surtout à ceux qui ne s'y intéressent pas.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2011
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Bonjour @Cafeinoman,
    oui, malheureusement une application qui doit être livrée d'ici fin 2014.
    je travaille avec Glassfish 4.1, NetBeans 8.0.2, JavaDB et jsf 2.2.
    j'ai suivi la piste de JAAS (un rapide tour sur google) mais la plupart c'est une authentification code (si c'est le bon terme).
    je veux dire l'authentification va chercher sur le code et non une BD (10 tables au max).
    1 - Est-ce que je peux utiliser une authentification qui va chercher (à l'aide des entités ) sur une base données (JavaDB) ?
    2 - aussi un problème qui se pose, vu le manque affreux du temps, je compte laisser la sécurité comme dernière phase de développement, et maintenant je travaille avec des managedbean en ViewScoped, alors que si j'utiliserai une sécurité web je pense que je dois utiliser SessionScoped.
    le temps m'oblige à réaliser d'abord la partie fonctionnelle, vu que la sécurité est optionnelle mais reste tout de même assez importante pour savoir qui a fait quoi (Application CRUD)

    merci à vous

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Bien sûr que Glassfish sait faire de l'authentification JAAS avec une DB, comme tous les serveurs d'applications dignes de ce nom...
    Regarde ceci, ça t'aidera certainement...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2011
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    merci @OButterlin, ca à l'air facile et intéressant comme tutoriel.
    toutefois, j'aimerai savoir s'il vous plait pour ma deuxième question qui est par rapport au scope des beans ?
    maintenant je travaille avec des managedbean en ViewScoped, alors que si j'utiliserai une sécurité web je pense que je dois utiliser SessionScoped.
    le temps m'oblige à réaliser d'abord la partie fonctionnelle, vu que la sécurité est optionnelle mais reste tout de même assez importante pour savoir qui a fait quoi (Application CRUD), est ce que ca posera un problème si j'ajoute une sécurité après ? (sécurité de type JAAS ou Spring S. )

  8. #8
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Bah non, le scope des beans n'a rien à voir avec la sécurité, le ViewScoped reste un très bon choix.
    La sécurité JAAS n'agit pas sur ça mais sur l'accès à une ressource de l'application.
    Si la page demandée (par exemple) fait partie des critères de sécurisation, alors si l'utilisateur n'est pas authentifié la page de login s'affichera (sous forme de popup ou de page en fonction du paramétrage de l'application) ensuite, on ne lui posera plus la question.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2011
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    je vois clairement maintenant le JAAS, donc il agit sur les pages.
    Une autre question toujours par rapport aux scopes, le scope session permettra, par exemple, de gérer une rubrique nommé "Mes Livres" si je comprends bien le principe.
    je détaille : j'ai besoin de créer une rubrique "Mes Livres", si j'utilise le scope View, l'identifiant de l'utilisateur sera perdu après chaque refresh !!
    ou est ce que JAAS n'a aucun rapport avec les scopes des beans et qu'il agit autrement ?
    Dans mon cas, est ce que je dois utiliser un bean gérant l'accès d'utilisateur ?

  10. #10
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Encore une fois, JAAS n'a aucune incidence sur le scope d'un managed bean d'une application JSF.
    Si jusque là ton application utilisait un ViewScoped, elle continuera de fonctionner comme avant.
    Les scopes ont cette signification :
    - RequestScoped : le bean est accessible par le demandeur (utilisateur) jusqu'à la fin de la réponse (HttpResponse)
    - ViewScoped : le bean est accessible par le demandeur tant qu'on reste sur la même page
    - SessionScoped : le bean est accessible pendant toute la durée de la session (HttpSession) de l'utilisateur
    - ApplicationScoped : le bean est accessible par n'importe quel utilisateur de l'application jusqu'à l'arrêt du serveur
    - CustomScoped : euh, là, ça dépend de ce que tu coderas dans le système

    Pour ce qui est du bean pour l'utilisateur, il n'a pas vraiment de raison d'être, une fois authentifié par JAAS, tu accèderas à l'utilisateur en cours (avec JSF) par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FacesContext.getCurrentInstance().getExternalContext().getUserPrincipal()
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2011
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    c'est très précis et clair, merci @OButterlin.
    je pense laisser la sécurité en dernière phase de dév.
    merci encore, et toute autre suggestion est la bienvenue

  12. #12
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Je te conseillerais plutôt de la mettre tout de suite en place parce que ça entraîne des modifications si tu veux gérer les droits (rôles).

    Il pourrait être intéressant d'encapsuler ces tests dans une classe abstraite dont hériterait tes ManagedBean, une fonction de ce genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    isUserInRole(String role)
    isUserInRoles(String[] roles, RolesConditionEnum condition)
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public enum RolesConditionEnum
    {
        AND, OR;
    }
    pour déterminer si tu as besoin d'avoir un des rôle ou tous les rôles...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2011
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    je vois ton approche, et j'essaierai de suivre ton conseil en mettant en place la sécurité en premier lieu.
    l'idée d'une classe abstraite est très interessante, merci .
    je vous tiens au courant

Discussions similaires

  1. différence entre Spring MVC et Spring intégré avec JSF
    Par marwa_eniso dans le forum Spring Web
    Réponses: 5
    Dernier message: 15/11/2016, 11h16
  2. [Security] Spring security avec application standalone
    Par nanou2002 dans le forum Spring
    Réponses: 1
    Dernier message: 30/03/2012, 21h20
  3. Menu dynamique avec Spring-security et JSF
    Par rc.dev2009 dans le forum JSF
    Réponses: 2
    Dernier message: 19/08/2011, 03h49
  4. Différence entre Spring MVC et Spring intégré avec JSF
    Par marwa_eniso dans le forum Frameworks Web
    Réponses: 3
    Dernier message: 31/08/2010, 07h16
  5. [Security] Spring Security et JSF: intercept-url
    Par Lourpiop dans le forum Spring
    Réponses: 3
    Dernier message: 06/05/2010, 20h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo