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

Sécurité Java Discussion :

[JGUARD] Problème suppression principals


Sujet :

Sécurité Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2
    Par défaut [JGUARD] Problème suppression principals
    Salut à tous,

    J'ai un petit souci avec l'utilisation de JGUARD. Je l'ai mis en place dans mon appli qui tourne sous Spring avec BDD Postgres. Je me suis fait une console d'administration basée sur l'exemple Struts livré avec JGuard.

    Pour la gestion des users et des domains, pas de soucis. Par contre la gestion des principals marche pas. Quand je veux supprimer, à chaque fois la méthode "authenticationManager.deletePrincipal()" me retourne false, et mes rôles restent en base de données.

    J'ai bien vu que les roles étaient gérés côté authorizationManager et authenticationManager. La méthode de l'authorizationManager supprime bien le rôle.

    Voici mon code :

    public ModelAndView deletePrincipal(HttpServletRequest request, HttpServletResponse response){
    AuthorizationManager authorizationManager = (AuthorizationManager) request.getSession().getServletContext().getAttribute(SecurityConstants.AUTHORIZATION_MANAGER);
    AuthenticationManager authenticationManager = (AuthenticationManager) request.getSession().getServletContext().getAttribute(SecurityConstants.AUTHENTICATION_MANAGER);
    String principalName = (String) request.getParameter("principal");
    try {

    authorizationManager.deletePrincipal((new RolePrincipal(principalName)));
    authenticationManager.deletePrincipal((new RolePrincipal(principalName)));
    } catch (AuthorizationException e) {
    e.printStackTrace();
    } catch (AuthenticationException e) {
    e.printStackTrace();
    }
    return this.listPrincipals(request, response);
    }


    Merci pour votre aide.
    GrOpOaL

  2. #2
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 28
    Par défaut
    STP Diabolo vient nous en aide on doit bientot présenter le projet fini et on a toujours ce problème de suppression...

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 136
    Par défaut
    hello,
    quelle version de jguard utilises-tu?
    concernant les principals /roles, une chose importnante à savoir est qu'un rôle est défini pour une application donnée.
    du côté authorizationManager, le nom de l'application doit être donné automatiquement car l'authorizationManager est spécifique à chaque application.
    ar contre, comme l'authenticationManager peut être partagé entre applications, i faut définir dans le principal son nom et le nom de l'application.
    je pense donc que l'erreur vient de là.
    est-ce que cela résoud votre problème?

    amicalement,

    Charles.
    www.jguard.net

  4. #4
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2
    Par défaut
    Bonjour diabolo,

    Merci d'avoir répondu à mon post. La version de JGuard que j'utilise est la 1.0.
    Je ne comprends pas pourquoi cela ne fonctionne pas, j'ai le même code que dans l'exemple Struts fourni, voici ma methode de création de rôle :

    public ModelAndView createPrincipal(HttpServletRequest request, HttpServletResponse response){
    AuthorizationManager authorizationManager = (AuthorizationManager) request.getSession().getServletContext().getAttribute(SecurityConstants.AUTHORIZATION_MANAGER);
    AuthenticationManager authenticationManager = (AuthenticationManager) request.getSession().getServletContext().getAttribute(SecurityConstants.AUTHENTICATION_MANAGER);
    String principalName = (String) request.getParameter("role");

    try {
    RolePrincipal principal = new RolePrincipal(principalName,request.getSession().getServletContext().getServletContextName());
    authorizationManager.createPrincipal(principal);
    authenticationManager.createPrincipal(principal);
    } catch (AuthorizationException e) {
    e.printStackTrace();
    } catch (AuthenticationException e) {
    e.printStackTrace();
    }
    return this.listPrincipals(request, response);
    }


    le RolePrincipal principal est crée avec le nom saisi dans ma jsp (principalName) et je lui passe bien le nom de l'application par le paramètre request.getSession().getServletContext().getServletContextName(). Le nom de notre application est LiFoD.

    Voici une copie de ce que nous avons en bdd pour les rôles, j'ai créé un rôle ESSAI via ma jsp :




    Une chose étrange , lorsque j'exécute le code suivant (j'ai mis LiFoD# en dur pour tester) et bien dans tmp je récupère bien mon rôle ESSAI, cependant l'instruction de suppression retourne toujours false.

    RolePrincipal tmp = (RolePrincipal) authenticationManager.getLocalPrincipal("LiFoD#"+principalName);
    if(authenticationManager.deletePrincipal(tmp))
    System.out.println("role supprimé");
    else
    System.out.println("role non supprimé");
    authorizationManager.deletePrincipal(tmp);

    De ce fait le rôle n'est pas supprimé par l'authenticationManager (il est donc toujours en base dans jg_principal), en revanche l'authorizationManager lui supprime bien ce rôle (il n'est plus dans jg_app_principal).

    Merci pour ton aide,
    GrOpOaL

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 136
    Par défaut
    salut gropoal,
    afin d'avoir plus d'informations,
    pourrais-tu mettre le niveau de logs de ton application au plus fin, notamment tout ce qui commence par net.sf.jguard?
    pour information, tout se passe dans ton cas dans la méthode "deletePrincipal" de la classe"JdbcAuthenticationManager"(si tu lies les sources, tu peux éventueleement mettre un point d'arrêt à ce niveau).
    la méthode recherche le principal passé en argument en recherchant d'abord l'id en base du principal ayant le meme nom et le meme nom d'application.
    un false en retour indique qu'il n'a pas trouvé de ligne dans la base.
    une log commencant par " there is no principal to delete:" devrait apparaitre dans tes logs si tu les mets au niveau le plus fin.
    est-ce que cela t'aide?

    amicalement,

    Charles.

  6. #6
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 28
    Par défaut
    authenticationManager.hasPrincipal("LiFoD#"+principalName)
    ===> renvoie true

    tmp = (RolePrincipal) authenticationManager.getLocalPrincipal("LiFoD#"+principalName);
    ===> pour récupérer le role, et le role est bien récupéré

    authenticationManager.deletePrincipal(tmp)
    ===> renvoie false......

    C'est quand même très louche...

Discussions similaires

  1. [MySQL] Problème suppression enregistrement
    Par Le Mad dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 21/05/2006, 17h29
  2. [DOM XML] Suppression de noeud XML
    Par xenoox dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 02/05/2006, 03h37
  3. Problème suppression table
    Par djuddju dans le forum Oracle
    Réponses: 1
    Dernier message: 14/04/2006, 17h02
  4. [Upload] Problème suppression de fichier
    Par julihus dans le forum Langage
    Réponses: 16
    Dernier message: 30/03/2006, 20h40
  5. [VBA-A] Problème Suppression enreg en cours
    Par _developpeur_ dans le forum Access
    Réponses: 2
    Dernier message: 17/10/2005, 20h08

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