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

Services Web Java Discussion :

évaluation des moyens de sécurisation de web service


Sujet :

Services Web Java

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Points : 1 053
    Points
    1 053
    Par défaut évaluation des moyens de sécurisation de web service
    Salut à tous.
    Je suis en stage et la tache qui m'incombe pour le moment est de faire un petit benchmark des possibilités pour sécuriser les web services en java (au sens large, intégrité, confidentialité, authentification,... tout le barda quoi).
    Le problème? Ben je suis fort fort perdu, ne serais-ce que comprendre ce qui existe et ce qui fonctionne est déjà pas la panacée. Alors je viens vous faire part de mes observations sur l'existant histoire que vous puissiez me corriger si je me trompe ou m'en dire plus sur les pistes que je n'ai pas encore exploré si vous vous êtes retrouvés dans le même cas que moi par le passé.
    Pour le moment j'ai deux serveurs faits en jax-ws avec la dernière version de cxf comme implémentation (l'implémentation peut-être appelée à changer si le besoin s'en fait sentir, mais c'est fort peu envisageable pour la définition des services).

    Mon maitre de stage n'est pas très chaud pour utiliser simplement du https, alors je planche sur un moyen de mettre en place le standard Oasis WSS .

    Tout d'abord coté CXF: apparemment le support est naze autant que possible. La doc est quasiment inexistante sur le site officiel. CXF utilise pour cela un autre projet apache nommé WSS4J pour lequel je n'ai pas pu trouver de doc non plus. Les seuls discussions que je croise à ce sujet parlent d'exceptions incompréhensible après avoir suivi l'unique tuto et ne sont jamais résolues. Jusqu'à preuve du contraire je me vois forcé de considérer que WS-Security + CXF il faut oublier.

    Ensuite coté WSIT: La visiblement tout le monde en parle, tout le monde il est content. En fait les seul témoignages positifs que j'ai pu croiser parlaient de WSIT. Mouais, c'est sur que ça a l'air génial avec une belle configuration entièrement intégrée à Netbeans et un serveur Glassfish reluisant. L'ennui c'est qu'ici on utilise jamais Netbeans et le moins souvent possible Glassfish (allez savoir pourquoi). Aussi il me faudrait un peu plus d'infos que je n'ai pas pu dégoter ailleurs (tous les docs que j'ai pu croiser prenaient leur pied en montrant de super screen shots, mais oubliaient bizarrement de parler du fond):
    WSIT c'est quoi? Une spec au même titre que jax-ws ou une implémentation comme Metro? Dans le second cas une implémention de quoi? Il y a d'autres implémentations? Ca tourne sur d'autres serveurs d'applications? Bref voila moult questions venues d'ailleurs qui méritent bien une Mulderisation.

    Comme on utilise beaucoup Spring par ici, j'ai aussi pensé fouiller un peu du coté d'Acegi. L'ennui c'est que je n'ai pas encore compris si il était possible de l'utiliser en conjonction avec Jax-Ws ou si il était obligatoire d'utiliser les classes Spring spécifiques pour générer des web services. Dans le second cas ça ne m'intéresse pas trop, je préfèrerais conserver mes interfaces annotées (parce que ça a trop la classe ).

    Voila c'est à peu près tout pour l'instant, si quelqu'un a quelques compléments d'information, ou simplement une remarque constructive, je le remercie d'avance de participer à la conversation. Moi j'essaierais de faire des comptes rendus si je trouve quoi que ce soit d'utile.

  2. #2
    Membre émérite
    Avatar de alexismp
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 503
    Points : 2 777
    Points
    2 777
    Par défaut
    Citation Envoyé par zais_ethael Voir le message
    Ensuite coté WSIT: La visiblement tout le monde en parle, tout le monde il est content. En fait les seul témoignages positifs que j'ai pu croiser parlaient de WSIT. Mouais, c'est sur que ça a l'air génial avec une belle configuration entièrement intégrée à Netbeans et un serveur Glassfish reluisant. L'ennui c'est qu'ici on utilise jamais Netbeans et le moins souvent possible Glassfish (allez savoir pourquoi). Aussi il me faudrait un peu plus d'infos que je n'ai pas pu dégoter ailleurs (tous les docs que j'ai pu croiser prenaient leur pied en montrant de super screen shots, mais oubliaient bizarrement de parler du fond):
    WSIT c'est quoi? Une spec au même titre que jax-ws ou une implémentation comme Metro? Dans le second cas une implémention de quoi? Il y a d'autres implémentations? Ca tourne sur d'autres serveurs d'applications? Bref voila moult questions venues d'ailleurs qui méritent bien une Mulderisation.
    Metro est une pile logicielle intégrée qui comprend une implémentation de JAX-WS 2.x et WSIT. Ce dernier est une extension de WSIT pour implémenter des standards WS-*.

    NetBeans facilite la configuration de WSIT en générant les assertions WS-Policy nécessaires au WSDL.
    Un des points importants de WSIT c'est qu'il n'y a pas (contrairement à d'autres piles Web Services) de nouvelle API pour faire du MTOM, du WS-ReliableMessaging, WS-Security, etc..

    Metro est intégré dans GlassFish v2 (install, config, monitoring, perfs), mais utilisable dans d'autres serveurs d'applications comme Tomcat ou JBoss.

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 210
    Points : 459
    Points
    459
    Par défaut
    Acegi est indépendant du framework de service web. Il permet de manière générale de sécuriser des accès à des modules. Au niveau web (donc WS) il intervient par des javax.servlet.Filter, donc indépendant de tes servlets. Il permet une flexibilité bluffante... Le choix total du comment on stock les tables d'utilisateurs, etc...

    Acegi va plus loin en permettant de sécuriser les composants au sein de l'application, via des Interceptor Spring et le SecurityContext (contexte de sécurité, charnière d'Acegi).

  4. #4
    Membre émérite
    Avatar de alexismp
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 503
    Points : 2 777
    Points
    2 777
    Par défaut
    Fait-on de la sécurisation au niveau message avec Acegi?

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Points : 1 053
    Points
    1 053
    Par défaut
    Autre questions en rapport avec Acegi:
    utilise-t-il des protocoles standards en rapport avec les web services ou fait-il son mix perso?
    Je m'explique: ce sur quoi je travaille est un référentiel pour un réseau distribué, ce programme n'a aucun intérêt si des entreprises indépendantes ne peuvent créer leur propre serveur pour mettre à disposition des informations sur le réseau. Il faut donc qu'ils puissent facilement implémenter ces serveurs (même pas forcément en Java, le dotnet est à la mode ces temps-ci...), l'idéal serait qu'ils aient juste à générer des interfaces à partir du wsdl sans autre tuning (mais faut quand même une sécurité conséquente, ça plaisante pas la confidentialité dans ce milieu là).
    Donc forcément si utiliser Acegi sur mon serveur m'oblige à l'utiliser partout ailleurs, clients et autres serveurs, ça a peu d'intérêt pour moi.
    Je m'interroge aussi sur le problème qu'a soulevé alexismp: vu que d'après ce que tu dis ça s'intercale au niveau des servlets, je vois mal ce que ça peut faire d'autre qu'une sécurisation au niveau de la couche transport. L'ennui c'est que si ce n'est "que" pour faire une sécurisation sur la couche transport, c'est pas plus mal d'utiliser ssl (techno de sécurisation officielle du Web Service Basic Profile toutes versions).

  6. #6
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 210
    Points : 459
    Points
    459
    Par défaut
    Je ne suis pas sûr mais je crois qu'il y a confusion.

    On parle de sécuriser les données par cryptage ou bien sécuriser les accès par identification/authentification d'utilisateurs, avec rôles etc... ?
    Car à ma connaissance Acegi ne s'occupe que des droits utilisateurs, qui peut faire quoi et comment ceux ci s'identifient à l'application.

    Pour les web services basés sur le transport http, cela passe par l'entete "Authentification: " avec au choix BASIC, DIGEST... contenant le login/pwd (en md5 ou en clair). Ces informations étant ensuite stockées dans un ThreadLocal représenté par le SecurityContext. Plus loin dans l'application, les interceptors se chargent de vérifier que l'utilisateur existe et qu'il a le droit d'accès à tel ou tel bean de Spring...

    Acegi fourni des Filter et Interceptors par défaut qui conviendront dans la plupards des cas, mais si il y a besoin de créer sa propre méthode d'identification c'est tout à fait possible.

    Rien n'empêche de mettre tout ça sur https ensuite...
    Une précision : Acegi n'a rien à faire du type de données. Ca peut être des services XML comme du RMI/http (cf: HttpInvoker dans Spring).

    @alexismp

    Tu entends quoi par au niveau message ?

  7. #7
    Membre émérite
    Avatar de alexismp
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 503
    Points : 2 777
    Points
    2 777
    Par défaut
    La sécurité de Web Services ne doit pas s'appuyer sur le transport utilisé mais plutôt sur une sécurisation du message SOAP. La sécurité doit être de bout en bout, pas de point à point.

  8. #8
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 210
    Points : 459
    Points
    459
    Par défaut
    Un Web Services ne veut pas forcément dire des messages SOAP.

    Cela dit, si les identifiants se trouvent dans les entetes SOAP, alors je pense qu'il est possible d'utiliser Acegi, au sein d'un module Axis2 par exemple, ou dans un PayloadEndPoint de Spring-WS (C'est la premiere solution qui me vient à l'esprit).

  9. #9
    Membre émérite
    Avatar de alexismp
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 503
    Points : 2 777
    Points
    2 777
    Par défaut
    Citation Envoyé par bugsan Voir le message
    Un Web Services ne veut pas forcément dire des messages SOAP.
    acegi s'applique certainement tres bien a des services REST...

  10. #10
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 210
    Points : 459
    Points
    459
    Par défaut
    Avec Axis2, le message REST est accessible via un arbre Axiom, sans différenciation avec un message SOAP (pour les entêtes je sais pas du tout). Et donc accessible via un module Axis2...


    En fait la question c'est ou et comment sont passés les identifiants...

Discussions similaires

  1. Comment sécuriser un Web Service ?
    Par zino developer dans le forum Services Web
    Réponses: 6
    Dernier message: 11/04/2014, 21h24
  2. Sécuriser un web service avec JAAS ou Spring-Security
    Par Le Marlou dans le forum Services Web
    Réponses: 1
    Dernier message: 26/07/2011, 19h37
  3. affichage des données provenant d'un web service soap dans une listview
    Par nagca dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 04/07/2011, 18h11
  4. Exposer des donnees simplement avec un Web Service
    Par florent_g dans le forum Accès aux données
    Réponses: 1
    Dernier message: 13/12/2010, 22h06
  5. Réponses: 1
    Dernier message: 08/07/2009, 15h00

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