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 :

Interception de méthodes


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 24
    Par défaut Interception de méthodes
    Bonjour

    Je cherche à vérifier l'identité d'utilisateurs avant d'autoriser l'exécution de certaines méthodes d'une appli web.

    J'ai vu qu'il existe une possibilité en insérant "devant" mon objet à surveiller un objet de type ProxyFactoryBean. L'inconvénient est qu'il faut définir ça pour chaque objet à surveiller.
    Les docs sur Acegi Security indiquent qu'il est possible d'intercepter des méthodes sur tous les objets, avec une configuration du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        paquetage.Classe.methode1=ROLE_ADMIN
        paquetage.Classe2.meth*=ROLE_ADMIN,ROLE_UTILISATEUR
    ... mais je n'ai pas réussi à faire fonctionner ces solutions .

    Est-ce que quelqu'un aurait un exemple simple de configuration d'Acegi Security pour ces interceptions ? J'ai déjà réussi à filtrer les utilisateurs par URL, donc toute la partie authentification, rôles, ... est en place, il ne reste qu'à déclarer l'interception de ces méthodes et les rôles qui sont autorisés à y accéder.

    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 143
    Par défaut
    As-tu regardé Spring Security 2.0? C'est la nouvelle version d'Acegi Security (oui, le nom a changé), et la configuration est très grandement simplifiée.
    Tu pourras très facilement mettre des droits d'accès sur tes méthodes, soit par AOP soit par annotation.

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 110
    Par défaut
    bonjour julien dubois, je suis débutant en spring et j'essaie de mettre en place le même mécanisme. J'ai rechercher sur internet un bonne exemple mais en vain. Pourrais-tu m'indiquer un exemple mettant en oeuvre la gestion des roles basé sur les méthodes ?

    Je n'ai pas de trouver le war "/spring-security-samples-tutorial-2.0.X" ? par contre j'ai trouvé que celui d'acegi en version 1.0.7 mais il ne contient pas de configuration de gestion des méthodes.

    Cordialement

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 143
    Par défaut
    Bonjour,

    Sur le site officiel nous avons un guide de référence complet, ainsi que plusieurs projets d'exemple :
    http://static.springsource.org/sprin...ite/index.html

    Le mieux est donc de démarrer par là.

    Sinon, sur mon propre projet (http://tudu.sf.net) il y également un bon exemple de sécurité au niveau des URLs, mais pas encore des méthodes. Je devrais le commiter dans trunk/tudu3 d'ici quelques jours, d'ailleurs.

  5. #5
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Salut,
    J'ai utilisé Spring Security 2 pour sécuriser un ensemble de services (disponible via remoting). La config est plutôt simple :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    <!-- activer la sécurisation des méthodes via l'annotation @Secured -->
    <sec:global-method-security
    		secured-annotations="enabled" access-decision-manager-ref="accessDecisionManager" />
     
    <!-- définition des intercepteurs (voters) -->
    <bean id="accessDecisionManager" class="org.springframework.security.vote.UnanimousBased">
    		<property name="decisionVoters" >
    			<list>
    				<bean class="temp.TestVoter" /></bean>
    			</list>
    		</property>
    </bean>
     
    <!-- définition des post-processeurs -->
    <bean class="test.YouOwnAfterInvocationProvider">
    		<sec:custom-after-invocation-provider />
    </bean>

    Et voilou.

    Je n'en suis pas sûr, mais je crois "<sec:custom-after-invocation-provider />" n'est pas encore fourni dans la distribution officielle de Spring Security (2.0.4, mais ça devrait être dans la 2.5). Dans le schemaLocation, mets cette uri :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.4.xsd
    [Mode hors Sujet]
    D'ailleurs, je trouve que cette solution, bien qu'elle fonctionne, est tordu : pourquoi ne pas simplement faire comme pour les voters ? i.e. via une property, du genre :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <sec:global-method-security
    		secured-annotations="enabled" access-decision-manager-ref="accessDecisionManager" after-invocation-provider-ref="..." />
    :p

Discussions similaires

  1. Interception de méthodes
    Par Rolf-IV dans le forum Langage
    Réponses: 1
    Dernier message: 02/05/2010, 15h39
  2. Réponses: 1
    Dernier message: 06/03/2009, 10h27
  3. [Framework] [AOP] Intercepter une méthode d'une inner class
    Par Widiwi dans le forum Spring
    Réponses: 4
    Dernier message: 02/02/2009, 11h16
  4. [AspectJ] pointcut pour intercepter des méthodes
    Par jymmy dans le forum Autres
    Réponses: 2
    Dernier message: 24/07/2007, 14h12
  5. Réponses: 3
    Dernier message: 04/04/2007, 08h45

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