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

Wildfly/JBoss Java Discussion :

JBoss 5.0 gestion des sessions HttpSession


Sujet :

Wildfly/JBoss Java

  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 205
    Par défaut JBoss 5.0 gestion des sessions HttpSession
    Salut,

    J'utilise JBoss 5.0, et j'ai créé une petite web app qui tourne bien.

    Là j'en suis à la gestion des sessions...

    Peut être me manque t'il quelques infos sur les Https Sessions en général ... je sais po !

    En fait j'ai mis un listener de sessions HttpSessionListener... qui override les deux fonctions sessionCreated, et sessionDestroyed...

    J'aimerais différencier les utilisateurs "invités, guest" et ceux "loggué" ...

    Le souci c'est que lorsque je rentre sur mon site, à la page d'accueil, le listener voit qu'une session HTTP a été créé...

    Alors que je ne crée à aucun moment une session avec du code, du moins je crois ...

    Est ce normale ? Le seul fait de me connecter à la page d'accueil d'un site crée une session ?

    Si oui alors comment différencier une session invité d'une session loggué ?

    Et l'autre problème c'est que si j'utilise la fonction "log", comme la session est déja crée, le listener ne vois pas que je viens de me logguer...

    et quand j'utilise "logout" il me detruit la session, et m'en recrée une juste après ?????


    J'aimerais bien trouver quelqu'un qui maîtrise bien les session et les listener de sessions svp et des details techniques...

    Et je m'expliquerait mieux si il faut ...

    Merci d'avance pour votre aide !

  2. #2
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut
    Oui, si mes souvenirs sont bons, les sessions sont créees pour un utilisateur dès sa première page vue.

    Si l'utilisateur est loggé ou non, ce n'est pas le fait qu'une session existe qui va t'en informer, mais plutôt ce que *toi* tu auras mis dedans comme objets et variables.

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 205
    Par défaut
    Ah ben ok merci,

    Par contre je ne sais pas si le fait qu'une session soit créé à la première page vue est dépendante de JBoss et donc de tomcat...

    Parce que j'avais utilisé Jonas aussi, et on avait un trace filter qui affichait les infos de sessions et parfois il arrivait que dans les traces afficher coté serveur on est :

    "Session : No Session"

    et après on avait "Session : JHJHFJHFY6576576etc..."

    Peut être aussi parce que les sessions utilisées étaient des beans Session ...
    C'est ca qui me chagrine un peu !

    Donc si je veux que seuls mes utilisateurs loggués soient mis dans la liste des "utilisateurs connectés" sur le site...

    Il faudrait que j'ajoute un attribut à ma session par exemple "Logged" = true... quand l'utilisateur est loggué....

    et que je check pour toutes les sessions courantes si cet attribut est mis à true ? et si oui j'affiche ...

    Ou alors j'utilise un autre listener de type : HttpSessionBindingListener, HttpSessionAttributeListener ?

    qui dirait lorsque cet attribut est mis à true alors je l'ajoute dans la liste des users connectés

    et lorsque il est mis à false, je le supprime de la liste !

    C'est ça ?

    La 2ème solution est mieux non ?

    Merci pour votre aide !

  4. #4
    Membre expérimenté
    Profil pro
    Dev NodeJS
    Inscrit en
    Août 2006
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev NodeJS

    Informations forums :
    Inscription : Août 2006
    Messages : 177
    Par défaut
    Le mieux est d'utiliser l'authentification via ton serveur, il créera tout ce qu'il faut en session!

    Jettes un coup d'oeuil à ça: http://beuss.developpez.com/tutoriel...on/formulaire/

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 205
    Par défaut
    Et sinon l'autre souci que j'ai...

    C'est que le site est tout en Ajax ...

    Et donc si un utilisateur se connecte ou se déconnecte, une fonction ajax rafraichit la liste des utilisateurs connectées dans un div css...sans que le reste de la page soit rechargée...

    Le problème, c'est que je check dans mon listener écrit en JAVA qu'une session est créé ou détruite...

    Et j'ai l'impression que je ne peux pas faire appel à mes fonctions javascript Ajax dans un listener ecrit en java ?
    En fait on peut appeler du java depuis javascript mais pas le contraire si ?

  6. #6
    Membre expérimenté
    Profil pro
    Dev NodeJS
    Inscrit en
    Août 2006
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev NodeJS

    Informations forums :
    Inscription : Août 2006
    Messages : 177
    Par défaut
    Il faut que ton listener soit un bean auquel tu accèdera en AJAX quand tu rafraichira ta div a intervalle régulier.

    Exemple:

    1/ Un utilisateur se déconnecte
    2/ Le listener mets a jour sa liste d'utilisateur
    3/ La page appelle la fonction Java
    4/ La fonction demande au bean la liste

    C'est le genre d'approche que j'emploierais, si tu veux plus de détails donne moi tes technologies (JSP ou JSF...)

    Bonne chance!

  7. #7
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut
    Je ne sais pas pour les autres, mais avec IceFaces on a moyen de faire des (soi-disant) push du serveur vers le client pour rafraichir un affichage. Voir l'exemple de la barre de progression.

  8. #8
    Membre expérimenté
    Profil pro
    Dev NodeJS
    Inscrit en
    Août 2006
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev NodeJS

    Informations forums :
    Inscription : Août 2006
    Messages : 177
    Par défaut
    RichFaces aussi, mais je ne pense pas que ça soit la solution à adopter.

  9. #9
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 205
    Par défaut
    salut yciabaud et _skip et merci pour vos réponses !

    yciabaud:
    Le mieux est d'utiliser l'authentification via ton serveur, il créera tout ce qu'il faut en session!

    Jettes un coup d'oeuil à ça: http://beuss.developpez.com/tutoriel...on/formulaire/
    Oui, merci pour le tutorial, j'ai bien regardé et il y a quelques notions dont cela fait plusieurs fois que je les vois, donc ça commence à rentrer !

    Le seul souci c'est que j'utilise JBoss 5.0 qui lui utilise Tomcat mais je crois qu'il y a quand même des trucs, ou des paramétrages qui changent par rapport à un Tomcat en standalone...

    De plus dans le tuto, une datasource est utilisée, alors que moi j'utilise EJB3.0, ça remplace bien la couche datasource si je ne m'abuse ? Mais alors comment adapter le realm à cela ?

    Aussi, la gestion des groupes, des utilisateurs et des rôles doit pouvoir être dynamique et donc j'avais fini par conclure que je ne pouvais utiliser le Realm, du fait que les groupes, les rôles soient déclarés dans le web.xml et que donc il faille une recompilation si on ajoute un rôle ...

    Je voudrais que l'on puisse créeer des Roles groupes user, changer user de groupe etc mais depuis l'application web, bref que tout ça soit dynamique ...

    Sinon comme celaa me semble difficile, supposons que seuls les users sont dynamiques , que les roles et les groupes soit defini en statique et que seul mes users ont une liberté de creation et dajout a un groupe, et de changement de groupe etc ...

    L'autre truc c'est que au final, ils veulent que j'intègre une authentification avec LDAP, donc je pensais que le realm ne faisait pas ça mais si ... apparemment c'est possible selon le tuto et d'ailleurs j'ai déjà testé une integration de LDAP avec un example d'appli web et un formulaire de login interagissant avec LDAP...

    Je me suis donc mis un LDAP en local sur ma machine et j'ai réussi à faire tourner l'exemple, sauf que dans l'exemple, il utilise Aussi JAAS, et donc ya un module loginModule avec plein de classe des UserTO, etc ...
    Donc ça m'a fait peur !

    De plus le LDAP d'entreprise ne donne que peu d'info si on l'interroge en anonymous, et on a pas le mot de passe root, ou de "directory Manager" dessus ...

    par contre si on s'authentifie avec son compte LDAP, on peut acceder a plus d'infos LDAP sur soi même .... et moi il faut que j'accede à certains attributs LDAP pour n'avoir pas à gerer les groupes dans mon appli ...

    Ou du moins je donne une fenetre de login, le gars il se log il me donne son login et son mot de pass LDAP dans la fenetre ...

    moi je check, ou un module le fait, pour verifier que c'est le bon couple de données ? déja la je sais pas trop ....

    Apres faudrait que si ces infos sont bonnes je me connecte a LDAP avec son login, son mot de passe, pour acceder aux infos genre division, organisation et donc dire "ok ce gars fait parti de tel groupe...", et je l'ajouterais dans un table Groupe interne a l'appli à son premier accès à l'appli ?

    Ou meme mieux, comme pour acceder a internet on doit taper son mot de pass et login LDAP et qu'il y a une authentification de faite ... supposons que c'est bon le gars est authentifié, mais il faut quand meme que j'arrive à recuperer ses infos LDAP pour definir son groupe et donc les pages ou il aura acces, comme dans l'etape d'avant ... Mais je sais pas si ca va etre possible de recuperer ces infos LDAP du User windows courant, ou du user du browser internet courant, car ya deja ces deux types d'authentifications avant celui de ma web app !

    Bon pour ce qui est du mode d'authentification BASIC, DIGEST, ou FORM, dans un premier temps BASIC ca ira, et les deux autres dans un deuxieme temps ...

    Voila pour le debut lol !

    Sinon :
    Il faut que ton listener soit un bean auquel tu accèdera en AJAX quand tu rafraichira ta div a intervalle régulier.
    Il faut que mon listener soit un bean ? un bean session ? entity ?
    Je veux dire tu peu detaillé un peu plus ?
    Rafraichir a intervalle regulier ouais c'est une solution, mais je trouve la solution de rafraichir simplement lorsque la liste change donc sur l'evenement "nouvelle session" "session detruite" plus logique ...

    1/ Un utilisateur se déconnecte
    2/ Le listener mets a jour sa liste d'utilisateur
    3/ La page appelle la fonction Java
    4/ La fonction demande au bean la liste

    C'est le genre d'approche que j'emploierais, si tu veux plus de détails donne moi tes technologies (JSP ou JSF...)
    Oui pour les 4 etapes, mais un peu plus de details me ferait pas de mal effectivement....
    Pour les technologies j'utilise EAR 5.0, WEB app 2.5 ,JSP .../ Servlet avec un model MVC simple sans struts ou spring ... parce ce que je sais pas les utiliser et que j'ai essayé mais en vain et que j'ai pas assez de temps pour me plonger dedans .

    JSF aussi j'aurais aimé l'utiliser parce que apparement "c'est plus mieux bien" mais plus d'experience su JSP et manque de temps encore une fois !

    Merci _skip pour les technologies IceFace et RichFaces, ces toujours quelques mots cléfs que je pourrais approfondir ! Mais à se stade je ne peux plus chyanger de techno ...

    Merci d'avance pour vos réponses et désolé pour la longueur du post et sa compléxité

  10. #10
    Membre expérimenté
    Profil pro
    Dev NodeJS
    Inscrit en
    Août 2006
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev NodeJS

    Informations forums :
    Inscription : Août 2006
    Messages : 177
    Par défaut
    Citation Envoyé par MaxLaMenaX Voir le message
    Le seul souci c'est que j'utilise JBoss 5.0 qui lui utilise Tomcat mais je crois qu'il y a quand même des trucs, ou des paramétrages qui changent par rapport à un Tomcat en standalone...
    La configuration est identique sous JBoss, tout se passe dans le web.xml

    Citation Envoyé par MaxLaMenaX Voir le message
    De plus dans le tuto, une datasource est utilisée, alors que moi j'utilise EJB3.0, ça remplace bien la couche datasource si je ne m'abuse ? Mais alors comment adapter le realm à cela ?
    .

    Cependant JBoss propose des modules de login supplémentaires paramétrables dans login-config.xml. Tu peux même développer le tiens!

    Citation Envoyé par MaxLaMenaX Voir le message
    Aussi, la gestion des groupes, des utilisateurs et des rôles doit pouvoir être dynamique et donc j'avais fini par conclure que je ne pouvais utiliser le Realm, du fait que les groupes, les rôles soient déclarés dans le web.xml et que donc il faille une recompilation si on ajoute un rôle ...
    Toutes ces informations peuvent être récupérées dans un datasource quelquonque donc aucun soucis pour le dynamisme.

    Citation Envoyé par MaxLaMenaX Voir le message
    Je voudrais que l'on puisse créeer des Roles groupes user, changer user de groupe etc mais depuis l'application web, bref que tout ça soit dynamique ...
    Du coup ton appli peut modifier tout dans la base de données ou autre...

    Citation Envoyé par MaxLaMenaX Voir le message
    L'autre truc c'est que au final, ils veulent que j'intègre une authentification avec LDAP, donc je pensais que le realm ne faisait pas ça mais si ... apparemment c'est possible selon le tuto et d'ailleurs j'ai déjà testé une integration de LDAP avec un example d'appli web et un formulaire de login interagissant avec LDAP...
    Justement JBoss propose un LDAPLoginModule, si l'anglais ne te fait pas peur, j'ai bien aimé ce tutoriel sur l'intégration de JBoss et LDAP. Je pense qu'il peut t'aider aussi.

    Citation Envoyé par MaxLaMenaX Voir le message
    Je me suis donc mis un LDAP en local sur ma machine et j'ai réussi à faire tourner l'exemple, sauf que dans l'exemple, il utilise Aussi JAAS, et donc ya un module loginModule avec plein de classe des UserTO, etc ...
    Donc ça m'a fait peur !
    JAAS m'a fait un peu peur aussi, je l'utilise avec une surcouche qui s'appelle JGuard (le développeur principal est français et traine sur le forum il me semble). Il est très facile à configurer mais son intégration avec LDAP ne gère pas les roles, du coup je ne pense pas que tu doive l'utiliser...

    Citation Envoyé par MaxLaMenaX Voir le message
    De plus le LDAP d'entreprise ne donne que peu d'info si on l'interroge en anonymous, et on a pas le mot de passe root, ou de "directory Manager" dessus ...
    C'est qu'il est bien fait!

    Citation Envoyé par MaxLaMenaX Voir le message
    par contre si on s'authentifie avec son compte LDAP, on peut acceder a plus d'infos LDAP sur soi même .... et moi il faut que j'accede à certains attributs LDAP pour n'avoir pas à gerer les groupes dans mon appli ...

    Ou du moins je donne une fenetre de login, le gars il se log il me donne son login et son mot de pass LDAP dans la fenetre ...

    moi je check, ou un module le fait, pour verifier que c'est le bon couple de données ? déja la je sais pas trop ....

    Apres faudrait que si ces infos sont bonnes je me connecte a LDAP avec son login, son mot de passe, pour acceder aux infos genre division, organisation et donc dire "ok ce gars fait parti de tel groupe...", et je l'ajouterais dans un table Groupe interne a l'appli à son premier accès à l'appli ?

    Ou meme mieux, comme pour acceder a internet on doit taper son mot de pass et login LDAP et qu'il y a une authentification de faite ... supposons que c'est bon le gars est authentifié, mais il faut quand meme que j'arrive à recuperer ses infos LDAP pour definir son groupe et donc les pages ou il aura acces, comme dans l'etape d'avant ... Mais je sais pas si ca va etre possible de recuperer ces infos LDAP du User windows courant, ou du user du browser internet courant, car ya deja ces deux types d'authentifications avant celui de ma web app !
    Dans ton cas je pense qu'il faut que tu écrive ton propre LoginModule (peut être en étendant LdapLoginModule) qui interroge le serveur LDAP et qui récupère les informations dont tu parles avant de les mettre en session.
    De bonne infos se trouvent ici et dans le tuto précédent.

    Citation Envoyé par MaxLaMenaX Voir le message
    Sinon :

    Il faut que mon listener soit un bean ? un bean session ? entity ?
    Je veux dire tu peu detaillé un peu plus ?
    Rafraichir a intervalle regulier ouais c'est une solution, mais je trouve la solution de rafraichir simplement lorsque la liste change donc sur l'evenement "nouvelle session" "session detruite" plus logique ...
    Je parle d'un bean session (peut-être avec le scope application) qui implémenterai le listener et que tu pourrais appeler afin de récupérer la liste des sessions en cours.
    Je ne vois pas comment rafraichir simplement en cas de changement car le client ne peut pas savoir quand rafraichir sans contacter le serveur...

    J'espère t'avoir un peu aidé, bon courage!

  11. #11
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 205
    Par défaut
    Re salut ! Merci yciabaud pour ton aide, c'est sympa !

    La configuration est identique sous JBoss, tout se passe dans le web.xml
    Cependant JBoss propose des modules de login supplémentaires paramétrables dans login-config.xml. Tu peux même développer le tiens!
    Voilà, c'est de cela que je parlais quand je disais qu'il y avait quelques paramètres différents entre un JBoss et un Tomcat en standalone.

    Tu peux même développer le tiens ? de module ? Je le développe où ? dans ma web app ou dans Jboss et comment je l'intègre ? J'ai pas bien compris ...

    Quand je parle du problème de dynamisme au niveau des rôles, c'est le fait qu'on déclare les rôles en statique dans le web.xml !

    et donc si je veux autoriser un nouveau rôle, je dois l'ajouter dans le web.xml et donc je dois recompiler pour que ce nouveau rôle soit pris en compte c'est ça qui me dérange ? ou alors il y a quelque chose que je n'ai pas saisi...
    Car en fait je ne veux pas qu'on ait à recompiler du moins je préférerais éviter...

    Bon il reste encore les solutions avec juste le User dynamique, à voir !

    Justement JBoss propose un LDAPLoginModule, si l'anglais ne te fait pas peur, j'ai bien aimé ce tutoriel sur l'intégration de JBoss et LDAP. Je pense qu'il peut t'aider aussi.
    Ouaip, merci, ben justement c'est ce tutoriel que j'ai fais ! C'est là qu'il y à une surcouche JAAS, et des DTO UserTO etc, aspect que je maîtrise que peu ou pas du tout ....

    JAAS m'a fait un peu peur aussi, je l'utilise avec une surcouche qui s'appelle JGuard (le développeur principal est français et traine sur le forum il me semble). Il est très facile à configurer mais son intégration avec LDAP ne gère pas les roles, du coup je ne pense pas que tu doive l'utiliser...
    Donc je vais devoir me developper un JAAS aussi ? Bon va falloir que je me penche dessus !

    Dans ton cas je pense qu'il faut que tu écrive ton propre LoginModule (peut être en étendant LdapLoginModule) qui interroge le serveur LDAP et qui récupère les informations dont tu parles avant de les mettre en session.
    De bonne infos se trouvent ici et dans le tuto précédent.
    Ok merci pour ce lien, le truc c'est que je sais pas bien où je dois développer le module si c'est dans mon appli ou dans JBoss...

    Je parle d'un bean session (peut-être avec le scope application) qui implémenterai le listener et que tu pourrais appeler afin de récupérer la liste des sessions en cours.
    Je ne vois pas comment rafraichir simplement en cas de changement car le client ne peut pas savoir quand rafraichir sans contacter le serveur...

    J'espère t'avoir un peu aidé, bon courage!
    Ok pour le bean session je vais essayer ça ...

    En fait j'ai un listener Servlet Context qui initialise le contexte au deploiement de mon application c'est a dire me crée une liste d'utilisateur vide...

    Avec mon listener de HttpSession je recupere le contexte courant et quand j'ai une session qui se crée j'ajoute à la liste quand c'est une destruction de session je supprime de la liste...

    Il faudrait juste que suite à modification de la liste je puisse rafraichir cette liste sur la page ...

    Je veux dire actuellement, je simule des sessions, j'en crée, j'en supprime et pour controler que tout se passe bien jai crée un lien "list user" et quand je clique dessus, il me retourne bien les utilisateurs actuellement connectés...

    Mais je voudrais que cela se fasse sans que l'utilisateur ait a cliqué sur un lien...

    Je peux dire a l'appli : quand l'utilisateur fait "login" je verifie ses données et si elle sont bonne j'ajoute les attributs sessions necessaires et apres je fais rafraichir la liste, idem a la deconnexion.....

    Ah ouais mais dans ce cas un autre utilisateur ailleurs lui n'aurait pas son naviguateur rafraichi puisqu'il n'a fait ni "login" ni "logout" ... et ne verrais donc pas que "moi" je viens de me connecter et de rafraichir mon naviguateur avec la bonne liste d'users ?

    Mais je ne peux pas dire au serveur, quand un des users de l'appli fait login ou logout, rafraichi moi tous les naviguateurs ? tous les clients ? C'est pas possible ca ?

    Sinon intervalle régulier ce serait de quelle périodicité ? 5secondes, 30 sec, 1 minutes, 5 minutes ? C'est pas lourd pour une appli de faire un check trop frequent ?

    Merci tu m'as déja beaucoup aidé ! !

  12. #12
    Membre expérimenté
    Profil pro
    Dev NodeJS
    Inscrit en
    Août 2006
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev NodeJS

    Informations forums :
    Inscription : Août 2006
    Messages : 177
    Par défaut
    Citation Envoyé par MaxLaMenaX Voir le message
    Voilà, c'est de cela que je parlais quand je disais qu'il y avait quelques paramètres différents entre un JBoss et un Tomcat en standalone.

    Tu peux même développer le tiens ? de module ? Je le développe où ? dans ma web app ou dans Jboss et comment je l'intègre ? J'ai pas bien compris ...
    Pour moi, il faut le mettre dans ton appli et y faire référence dans le login-module.xml de ton contexte JBoss.

    Citation Envoyé par MaxLaMenaX Voir le message
    Dans ton appli
    Quand je parle du problème de dynamisme au niveau des rôles, c'est le fait qu'on déclare les rôles en statique dans le web.xml !

    et donc si je veux autoriser un nouveau rôle, je dois l'ajouter dans le web.xml et donc je dois recompiler pour que ce nouveau rôle soit pris en compte c'est ça qui me dérange ? ou alors il y a quelque chose que je n'ai pas saisi...
    Car en fait je ne veux pas qu'on ait à recompiler du moins je préférerais éviter...

    Bon il reste encore les solutions avec juste le User dynamique, à voir !
    Tu n'a pas besoin de mettre les rôles en dur dans le web.xml si tu vas les chercher dans ton LDAP. La seule chose que tu précise dans ce fichier ce sont les rôles qui sont autorisés a se connecter ou non à ton application, mais c'est facultatif, tu peux tout gérer dans ton module.

    Citation Envoyé par MaxLaMenaX Voir le message
    Ouaip, merci, ben justement c'est ce tutoriel que j'ai fais ! C'est là qu'il y à une surcouche JAAS, et des DTO UserTO etc, aspect que je maîtrise que peu ou pas du tout ....
    Je ne pense pas qu'il y ai du JAAS ici, ce sont les classes et les service qu'il a créé pour accéder a son LDAP et représenter ses utilisateurs.

    Citation Envoyé par MaxLaMenaX Voir le message
    Donc je vais devoir me developper un JAAS aussi ? Bon va falloir que je me penche dessus !
    Si tu utilises un login module, tu n'a pas besoin de ré implémenter du JAAS je pense.

    Citation Envoyé par MaxLaMenaX Voir le message
    Mais je ne peux pas dire au serveur, quand un des users de l'appli fait login ou logout, rafraichi moi tous les naviguateurs ? tous les clients ? C'est pas possible ca ?

    Sinon intervalle régulier ce serait de quelle périodicité ? 5secondes, 30 sec, 1 minutes, 5 minutes ? C'est pas lourd pour une appli de faire un check trop frequent ?
    Non c'est pas possible, tu dois faire une requête AJAX régulièrement pour récupérer ta liste, et si elle a changé tu modifie ta div.
    Pour ce qui est de la fréquence c'est à toi de choisir en fonction du nombre de clients, des ressources du serveur et du besoin, mais je pense qu'une minute est un bon compromis
    En AJAX les requêtes ne seront pas trop lourdes, mais après ça dépends encore une fois de nombreux paramètres.
    De toute façon si tu as besoin d'avoir la liste qui se rafraichit en temps réel, il n'y a pas d'autre solution.

  13. #13
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 205
    Par défaut
    Ok !

    Ben encore merci, tu dois en avoir un peu marre de me répondre surtout que la concision n'a pas l'air d'être mon fort !

    Pour moi, il faut le mettre dans ton appli et y faire référence dans le login-module.xml de ton contexte JBoss.
    Ok c'est compris cette fois !

    Tu n'a pas besoin de mettre les rôles en dur dans le web.xml si tu vas les chercher dans ton LDAP. La seule chose que tu précise dans ce fichier ce sont les rôles qui sont autorisés a se connecter ou non à ton application, mais c'est facultatif, tu peux tout gérer dans ton module.
    Ok, je pensais que c'était obligatoire, et c'est cela qui me faisiat croire que les roles était statique ! Si je peux tout gérer dans mon module c'est bon !

    par contre dans le web.xml c'est la qu'on definit les url-patterns pour chaque role avec les methodes put get etc ! Ca aussi je peux le mettre dans mon module de sorte que ca en devienne dynamique ?

    e ne pense pas qu'il y ai du JAAS ici, ce sont les classes et les service qu'il a créé pour accéder a son LDAP et représenter ses utilisateurs.
    Ok je me suis peut être trompé, en même temps dans le tuto, il y à ça :
    Security
    JBoss Authentication

    The authentication process can be triggered by a call to the standard servlet login mechanism specified in the servlet specification, ie a form submitting to the action j_security_check. The first step is therefore to create a login page, containing a form like this:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	<form action="j_security_check" method="post">
    		Username: <input type="text" name="j_username" size="22"/>
    		Password: <input type="password" name="j_password" size="22"/>
    		<input type="submit" value="Login" />
    	</form>
    The username and password will be intercepted by the JBoss SecurityInterceptor and passed to the JAASSecurityManager class as Principal and Credential objects. It is worth noting here that if a user bookmarks a login page, or uses the browser back button to reach the page, they will see an error. This is a feature of the Tomcat implementation of the j_security_check mechanism. The next step is to set up the web.xml file as follows:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	<login-config>
    		<auth-method>FORM</auth-method>
    			<form-login-config>
    				<form-login-page>/login.jsp</form-login-page>
    				<form-error-page>/login_error.html</form-error-page>
    			</form-login-config>
    	</login-config>
    Login modules within an application policy are chained . the .flag. value specifies whether they are required to succeed or not. The ClientLoginModule should be specified if you wish to use EJB security - it passes the username and credentials obtained during login to the org.jboss.security.SecurityAssociation class so that each EJB method invocation is associated with the given username and credentials. See below for details on how custom login modules work On login, the JAASSecurityManager will create a LoginContext for the security domain specified and attempt to authenticate the specified Principal by calling the login modules configured for that domain. Internally, this looks something like the following:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    String name = getSecurityDomain(); 
    	CallbackHandler handler = new org.jboss.security.plugins.SecurityAssociationHandler(); 
    	handler.setSecurityInfo(principal, credential); 
    	LoginContext lc = new LoginContext(name, handler); 
    	lc.login();
    The security domain should be specified in the jboss-web.xml and jboss.xml files, with a declaration like this:

    <security-domain>java:/jaas/security-example</security-domain>

    The JAASSecurityManager will then get a a javax.security.Subject from the LoginContext, which will contain a Principal called username and a javax.security.Group called Roles (containing an array of this user's roles) will be created. This is what allows methods like isUserInRole and getCallerPrincipal in the servlet and EJB containers to verify the current user.
    Donc j'ai un petit doute ^^ !

    Non c'est pas possible, tu dois faire une requête AJAX régulièrement pour récupérer ta liste, et si elle a changé tu modifie ta div.
    Pour ce qui est de la fréquence c'est à toi de choisir en fonction du nombre de clients, des ressources du serveur et du besoin, mais je pense qu'une minute est un bon compromis
    En AJAX les requêtes ne seront pas trop lourdes, mais après ça dépends encore une fois de nombreux paramètres.
    De toute façon si tu as besoin d'avoir la liste qui se rafraichit en temps réel, il n'y a pas d'autre solution.
    Ok, sinon c'est pas possible de le faire à chaque nouvelle page, ou chaque rafraichissement de pages ? Je veux dire sur certains sites de réseaux sociaux, j'ai plus l'impression que c'est réalisé lorsque on rafraichit, ou change de page ... (la liste des users) que un truc périodique !

    Merci encore pour tes réponses ! Ca m'aide à avancer !

    Lut ^^ !

  14. #14
    Membre expérimenté
    Profil pro
    Dev NodeJS
    Inscrit en
    Août 2006
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev NodeJS

    Informations forums :
    Inscription : Août 2006
    Messages : 177
    Par défaut
    Citation Envoyé par MaxLaMenaX Voir le message
    par contre dans le web.xml c'est la qu'on definit les url-patterns pour chaque role avec les methodes put get etc ! Ca aussi je peux le mettre dans mon module de sorte que ca en devienne dynamique ?
    Oui tu peux le faire en Java ou dans les JSP avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.isUserInRole(leRole)
    Citation Envoyé par MaxLaMenaX Voir le message
    Ok je me suis peut être trompé, en même temps dans le tuto, il y à ça :


    Donc j'ai un petit doute ^^ !
    Ah oui visiblement c'est du JAAS, mais je voulais surtout dire qu'il n'y a aucune classes JAAS a developper. Car j'ai vu des tutoriaux JAAS ça fait vraiment peur!

    Citation Envoyé par MaxLaMenaX Voir le message
    Ok, sinon c'est pas possible de le faire à chaque nouvelle page, ou chaque rafraichissement de pages ? Je veux dire sur certains sites de réseaux sociaux, j'ai plus l'impression que c'est réalisé lorsque on rafraichit, ou change de page ... (la liste des users) que un truc périodique !
    Oui bien sur, si tu n'a pas un besoin spécifique d'avoir un rafraichissement en live, tu peux juste le faire a chaque page. C'est beaucoup mieux au niveau des performances!

    Je pensais que tu avais besoin de quelque chose en temps réel, comme un écran de contrôle quoi.

  15. #15
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 205
    Par défaut
    Re yciabaud, et re merci ^^ !

    Bon ben ca commence vraiment à prendre forme dans ma tête, c'est déjà bien !

    Oui tu peux le faire en Java ou dans les JSP avec :
    Code :

    request.isUserInRole(leRole)
    Ok, ouais je vois, c'est un peu ce que mes collègues font mais en php et sauf que la fonction s'appelle isMemberOf() !

    Par contre il faudrait que (leRole) soit mis dans une variable dans le code... et que cette variable prennent la valeur du role defini en fonction des droits, toujours pour la dynamicité...

    Ok pour le JAAS, compris ...

    Bon ben comme j'ai pas internet chez moi, j'ai recupéré toutes les docs sur loginmodule et ldap module sur Jboss et tout ca ...

    et je vais commencé par un petit exemple ... et essayé de faire tourner ça ...

    Oui bien sur, si tu n'a pas un besoin spécifique d'avoir un rafraichissement en live, tu peux juste le faire a chaque page. C'est beaucoup mieux au niveau des performances!

    Je pensais que tu avais besoin de quelque chose en temps réel, comme un écran de contrôle quoi.
    En fait non, c'est surtout pour l'aspect collaboratif de la web app, que les gens puissent communiquer entre utilisateurs connectés via un petit chat ou des messsages ... et surtout aussi pour tester ma gestion de session !

    Puis bon c'est quand même une fonctionnalité qui existe souvent dans les sites donc c'est bon de savoir faire !

    Merci encore et à un de ces 4 !

    Si tu as un exemple de code aussi ca me derange pas en mp ou autres !

    Salut !!^^

Discussions similaires

  1. jboss seam gestion des sessions d'utilisateur
    Par soussou126 dans le forum Wildfly/JBoss
    Réponses: 0
    Dernier message: 31/12/2008, 12h04
  2. [JSP] Gestion des sessions
    Par ze veritable farf dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 28/06/2006, 11h44
  3. [Struts][JSP]gestion des session en JSP
    Par zola dans le forum Struts 1
    Réponses: 6
    Dernier message: 27/04/2006, 17h23
  4. gestion des sessions
    Par jeff_! dans le forum Langage
    Réponses: 4
    Dernier message: 20/03/2006, 23h09
  5. [tomcat] gestion des sessions
    Par sebos63 dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 12/10/2004, 15h25

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