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

GWT et Vaadin Java Discussion :

Authentification d'une application GWT avec CAS


Sujet :

GWT et Vaadin Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13
    Points : 15
    Points
    15
    Par défaut Authentification d'une application GWT avec CAS
    Bonjour,

    Je suis actuellement en train de développer une application avec GWT et je me heurte à un problème d'authentification. Sur la plateforme où mon application GWT est déployée, un serveur d'authentification CAS et je voudrais utiliser cette authentification pour connecter les utilisateurs à mon application.

    Je suis donc allé sur ce site décrivant l'intégration dans un client Java :
    http://www.jasig.org/cas/client-integration/java-client

    J'ai ensuite modifié mon fichier web.xml pour ajouter le filtre de l'authentification CAS.
    <filter>
    <filter-name>CAS Filter</filter-name>
    <filter-class>edu.yale.its.tp.cas.client.filter.CASFilter</filter-class>
    <init-param>
    <param-name>edu.yale.its.tp.cas.client.filter.loginUrl</param-name>
    <param-value>https://dev-cas/cas/login</param-value>
    </init-param>
    <init-param>
    <param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
    <param-value>https://dev-cas/cas/serviceValidate</param-value>
    </init-param>
    <init-param>
    <param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
    <param-value>localhost:8080</param-value>
    </init-param>
    </filter>

    <filter-mapping>
    <filter-name>CAS Filter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>

    <env-entry>
    <env-entry-name>AUTH_MODE</env-entry-name>
    <env-entry-value>CAS</env-entry-value>
    <env-entry-type>java.lang.String</env-entry-type>
    </env-entry>
    <env-entry>
    <env-entry-name>LOGOUT_PAGE</env-entry-name>
    <env-entry-value>https://dev-cas/cas/logout</env-entry-value>
    <env-entry-type>java.lang.String</env-entry-type>
    </env-entry>-->
    C'est maintenant que j'ai dû mal à savoir ce qu'il faut que je fasse pour valider les tickets renvoyés par mon serveur CAS. Est-ce qu'il faut que je définisse une méthode RPC permettant de valider le ticket (un peu comme dans l'exemple proposé sur le site Jasig) et qui est appelée dans la méthode onModuleLoad() de ma classe principale GWT?
    Ou bien, est-il préférable de définir une servlet vérifiant le ticket et qui est appelée une fois que l'utilisateur est authentifié? Cette méthode chargerait ensuite mon application GWT?

    Si quelqu'un a déjà mis en place ce type d'authentification avec GWT, je serais ravi de savoir comment il ou elle a procédé(e).

    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    Salut,

    J'ai déjà cassifié une application GWT.

    Je n'ai en revanche pas utilisé le CASFilter car dans mon cas, je pouvais envoyé l'utilisateur sur différents serveur CAS. Ma solution est la suivante :

    1) Le client fait une première requete http au serveur
    2) Le serveur http envoit au client le code html/js de mon application gwt.
    3) Dans le onModuleLoad(), j'appel une méthode de login côté serveur
    4) Cette méthode côte serveur se branche sur une interface AuthenticationService pour laquelle j'ai plusieurs authentification possible (CAS, LDAP, BDD, File, GAE, ...)
    5) Mon implémentation CASAuthenticationService (qui utilise la bibliothèque CasClient) vérifie s'il y a un ticket dans la requête.
    S'il n'y a pas de ticket, elle récupère en fonction de l'url de la requête le CAS approprié et renvoit au client GWT l'url de login du CAS (url du cas + url du service pour revenir à mon application)
    6) Le client GWT part donc sur le serveur CAS en modifiant l'url courante (voir comment faire cela ici)
    7) Le CAS permet d'authentifier l'utilisateur. Dès qu'il est authentifié, il revient sur mon application GWT grâce à l'URL de service fourni lors de son appel.
    8) L'application GWT repasse alors dans le onModuleLoad() qui rappelle le serveur et repasse donc dans mon CASAuthenticationService mais cette fois, il y a un ticket dans la requête ...
    9) CASAuthenticationService essaye de le valider. Si c'est ok, je récupere côté serveur le login du user et poursuit mon traitement. Si ce n'est pas ok, j'envoi une erreur à mon client GWT.


    Ca va, je t'ai pas perdu ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13
    Points : 15
    Points
    15
    Par défaut
    Merci beaucoup pour ta réponse benwit! Je pense que ça va bien m'aider.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13
    Points : 15
    Points
    15
    Par défaut
    Salut benwit,

    Est-ce que je pourrais te déranger à nouveau à propos du CAS?

    Je pense que ce que j'essaie de faire se rapproche de ce que tu as fait pour ton application, à part que je n'ai qu'une seule façon de m'authentifier, avec le CAS.

    J'ai donc défini un CASFilter afin d'accéder à ma page de login CAS. Une fois authentifier, CAS me redirige vers l'url de mon service, à savoir mon application GWT.

    Dans ma méthode onModuleLoad(), je fais appel à une méthode asynchrone côté serveur qui doit valider le ticket reçu du serveur CAS.

    Le problème, c'est que j'ai une erreur au moment où je suis redirigé vers mon service. J'ai une erreur HTTP: ERROR 500 avec le message suivant :
    Unable to validate ProxyTicketValidator [[edu.yale.its.tp.cas.client.ProxyTicketValidator proxyList=[null] [edu.yale.its.tp.cas.client.ServiceTicketValidator casValidateUrl=[https://dev-cas/cas/serviceValidate] ticket=[ST-392-hQun1CKRddcmF9ysQlkWfTcUKQAzYexhEbP-20] service=[http%3A%2F%2Flocalhost%3A9000%2FProjetsRentree.html] renew=false]]]
    Ma méthode onModuleLoad() n'est même pas appelée, j'ai l'erreur avant même de faire appel à ma méthode de validation du ticket.

    Au niveau de mon serveur, j'ai le message d'erreur suivant :
    javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1591)
    at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:187)
    at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:181)
    at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:975)
    at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:123)
    at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:516)
    at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:454)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:884)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1096)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1123)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1107)
    at sun.net.http://www.protocol.https.HttpsClien...lient.java:405)
    at sun.net.http://www.protocol.https.AbstractDe...ction.java:166)
    at sun.net.http://www.protocol.http.HttpURLConn...ction.java:977)
    at sun.net.http://www.protocol.https.HttpsURLCo...nImpl.java:234)
    at edu.yale.its.tp.cas.util.SecureURL.retrieve(SecureURL.java:84)
    at edu.yale.its.tp.cas.client.ServiceTicketValidator.validate(ServiceTicketValidator.java:212)
    at edu.yale.its.tp.cas.client.CASReceipt.getReceipt(CASReceipt.java:57)
    at edu.yale.its.tp.cas.client.filter.CASFilter.getAuthenticatedUser(CASFilter.java:455)
    at edu.yale.its.tp.cas.client.filter.CASFilter.doFilter(CASFilter.java:378)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088)
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.Server.handle(Server.java:324)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:829)
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:513)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
    L'erreur provient-elle du fait qu'il me manque le certificat de mon serveur CAS? Si c'est le cas, où est-ce que je dois le placer dans mon application?

    Est-ce qu'il ne vaut pas mieux que je créé une servlet à part uniquement pour la validation de mon ticket?

    Merci d'avance.

  5. #5
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    Je l'ai pas eu celle là !
    Je n'ai pas eu de problème de certificats.

    Tu devrais peut être utilisé une servlet à part, je pense que ça serait mieux. Il ne faut pas appliquer ton filtre à toutes les requêtes.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13
    Points : 15
    Points
    15
    Par défaut
    Salut,

    J'aurais (encore) une question pour toi si ça te dérange pas.

    Dans ton implémentation de CAS, ta méthode côté serveur CASAuthenticationService vérifie s'il y a un ticket dans la requête HTTP. De mon côté, je n'arrive pas à récupérer le paramètre "ticket" de ma requête HTTP dans ma méthode côté serveur.

    Pour le récupérer, j'utilise le code suivant :
    HttpServletRequest request = getThreadLocalRequest();
    request.getParameter("ticket")
    Sauf que dans ma requête côté serveur, ce paramètre n'est pas présent. Il n'est présent que dans la requête lors du chargement du client. Du coup, est-il possible de récupérer un paramètre d'une requête HTTP dans la méthode onModuleLoad() de la partie client et de le transmettre à la méthode d'authentification côté serveur?
    Ou bien, il faut que je fasse différemment pour récupérer ce paramètre?

  7. #7
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    Salut,

    Oui, j'ai oublié de te dire qu'effectivement, lorsque le CAS revient sur ton application, il revient sur la page html de ton module gwt.

    Il te faut donc récupéré en gwt le paramètre dans l'url pour l'envoyer à ton service (la méthode d'implémentation coté serveur)
    Pour récupérer ce paramètre dans l'url, je l'avais fait à l'époque par jsni mais depuis, il y a la classe Window.Location dans GWT.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13
    Points : 15
    Points
    15
    Par défaut
    Merci bien pour toutes ces infos, ça m'a beaucoup aidé!

    Mon application GWT est maintenant CAS-ifiée!

    Maintenant il faut que je me penche sur la mise en place d'une architecture avec Proxy car dans mon application GWT je dois appeler des services d'une autre application, elle aussi CAS-ifiée. J'espère que tout se passera bien

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 17
    Points : 15
    Points
    15
    Par défaut
    Bonjour,

    Merci pour ce post.

    Ma question concerne l’affichage du LOGIN CAS après l’authentification.

    En effet, j’écris une page où je voudrais tout simplement afficher « vous êtes authentifié en tant que : » avec le login CAS de la personne authentifié.

    Comment faire ?

    normalement côté serveur, en écrivant ces lignes :
    HttpServletRequest request = this.getThreadLocalRequest();
    HttpSession session = request.getSession();
    session.getAttribute("user");

    Je devrais pouvoir récupérer le login CAS,

    Pourtant ma variable session est null.

    Une idée ?

    Merci d’avance.

  10. #10
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    Personnellement, je récupérai l'identifiant de connexion du CAS (en cas de réussite de l'authentification) après validation d'un ticket reçu dans un attribut de requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    String login = null;
    String ticket = request.getParameter("ticket");
    ServiceTicketValidator ticketValidator = new ServiceTicketValidator();
    ticketValidator.setCasValidateUrl("http://cas.company.com/serviceValidate");
    ticketValidator.setService("http://applicationacassifier.company.com");
    ticketValidator.setServiceTicket(ticket);
    ticketValidator.validate();
     
    if (ticketValidator.isAuthenticationSuccesful())
            login = ticketValidator.getUser();
     
    return login;

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 17
    Points : 15
    Points
    15
    Par défaut
    Merci pour votre aide.
    Est-il possible de corriger ce que je fais car je tourne en rond (je débute en programmation GWT et malheureusement je ne connais pas bien les librairies GWT).

    Fichier Cas.gwt.xml :
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 1.7.0//EN" "http://google-web-toolkit.googlecode.com/svn/tags/1.7.0/distro-source/core/src/gwt-module.dtd">
    <module>
    <inherits name="com.google.gwt.user.User" />
    <entry-point class="fr.univrennes2.cri.etudiantapogee.client.Cas"></entry-point>
    </module>
    Fichier Cas.java (partie client) :

    package fr.univrennes2.cri.etudiantapogee.client;

    import com.google.gwt.user.client.ui.DialogBox;
    import com.google.gwt.core.client.EntryPoint;
    import com.google.gwt.core.client.GWT;

    public class Cas implements EntryPoint {

    /**
    * Create a remote service proxy to talk to the server-side Greeting service.
    */
    private final GreetingService greetingService = GWT
    .create(GreetingService.class);

    @Override
    public void onModuleLoad() {
    // Create the popup dialog box
    final DialogBox dialogBox = new DialogBox();
    // TODO Auto-generated method stub
    String loginCAS = greetingService.loginCAS();
    dialogBox.setText("Vous êtes : "+loginCAS);
    }
    }
    Fichier GreetingService.java :

    package fr.univrennes2.cri.etudiantapogee.client;

    import com.google.gwt.user.client.rpc.RemoteService;
    import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;

    /**
    * The client side stub for the RPC service.
    */
    @RemoteServiceRelativePath("greet")
    public interface GreetingService extends RemoteService {
    String greetServer(String name);
    String loginCAS();
    }
    Fichier GreetingServiceAsync.java :
    package fr.univrennes2.cri.etudiantapogee.client;

    import com.google.gwt.user.client.rpc.AsyncCallback;

    /**
    * The async counterpart of <code>GreetingService</code>.
    */
    public interface GreetingServiceAsync {
    void greetServer(String input, AsyncCallback<String> callback);
    void loginCAS(AsyncCallback<String> callback);
    }
    Fichier GreetingServiceImpl.java (partie serveur) :
    package fr.univrennes2.cri.etudiantapogee.server;

    import java.io.IOException;

    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;
    import javax.xml.parsers.ParserConfigurationException;

    import org.xml.sax.SAXException;

    import edu.yale.its.tp.cas.client.ServiceTicketValidator;
    import fr.univrennes2.cri.etudiantapogee.client.GreetingService;
    import com.google.gwt.user.server.rpc.RemoteServiceServlet;

    /**
    * The server side implementation of the RPC service.
    */
    @SuppressWarnings("serial")
    public class GreetingServiceImpl extends RemoteServiceServlet implements
    GreetingService {

    public String loginCAS() {
    HttpServletRequest request = this.getThreadLocalRequest();
    String login = null;
    String ticket = request.getParameter("ticket");
    ServiceTicketValidator ticketValidator = new ServiceTicketValidator();
    ticketValidator.setCasValidateUrl("https://cas.uhb.fr/serviceValidate");
    ticketValidator.setService("http://127.0.0.1:8080");
    ticketValidator.setServiceTicket(ticket);
    try {
    ticketValidator.validate();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (SAXException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (ParserConfigurationException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    if (ticketValidator.isAuthenticationSuccesful())
    login = ticketValidator.getUser();
    return login;
    }

    @Override
    public String greetServer(String name) {
    // TODO Auto-generated method stub
    return null;
    }
    }
    Fichier Cas.html :
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>Cas</title>
    <script type="text/javascript" language="javascript" src="fr.univrennes2.cri.etudiantapogee.Cas/fr.univrennes2.cri.etudiantapogee.Cas.nocache.js"></script>
    </head>

    <body>
    <iframe src="javascript:''" id="__gwt_historyFrame" tabIndex='-1' style="position:absolute;width:0;height:0;border:0"></iframe>

    </body>
    </html>
    Quand je lance un Run en mode Web, aucun appel à mon serveur CAS ne s'effectue.
    Quand je modifie le port 8080 en 8888 et que je lance un run en mode GWT, l'appel à mon serveur CAS se fait bien, mais après aucun affichage du Login car j'obtiens l'erreur suivante :

    [ERROR] Failed to create an instance of 'fr.univrennes2.cri.etudiantapogee.client.Cas' via deferred binding
    java.lang.ClassCastException: fr.univrennes2.cri.etudiantapogee.client.GreetingService_Proxy cannot be cast to fr.univrennes2.cri.etudiantapogee.client.GreetingService
    at fr.univrennes2.cri.etudiantapogee.client.Cas.<init>(Cas.java:13)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at com.google.gwt.dev.shell.ModuleSpace.rebindAndCreate(ModuleSpace.java:373)
    at com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:318)
    at com.google.gwt.dev.shell.BrowserWidget.attachModuleSpace(BrowserWidget.java:343)
    at com.google.gwt.dev.shell.ie.BrowserWidgetIE6.access$300(BrowserWidgetIE6.java:37)
    at com.google.gwt.dev.shell.ie.BrowserWidgetIE6$External.gwtOnLoad(BrowserWidgetIE6.java:77)
    at com.google.gwt.dev.shell.ie.BrowserWidgetIE6$External.invoke(BrowserWidgetIE6.java:161)
    at com.google.gwt.dev.shell.ie.IDispatchImpl.Invoke(IDispatchImpl.java:294)
    at com.google.gwt.dev.shell.ie.IDispatchImpl.method6(IDispatchImpl.java:194)
    at org.eclipse.swt.internal.ole.win32.COMObject.callback6(COMObject.java:117)
    at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
    at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:1925)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2966)
    at com.google.gwt.dev.SwtHostedModeBase.processEvents(SwtHostedModeBase.java:235)
    at com.google.gwt.dev.HostedModeBase.pumpEventLoop(HostedModeBase.java:558)
    at com.google.gwt.dev.HostedModeBase.run(HostedModeBase.java:405)
    at com.google.gwt.dev.HostedMode.main(HostedMode.java:232)
    Merci d'avance pour votre aide.

    Cordialement.

  12. #12
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    Je te joins un exemple de projet avec authentification CAS (gwt 1.7, eclipse 3.5 galileo)

    Pour que le zip respecte les limites de tailles du forum, j'ai enlevé le fichier gwt-servlet.jar qui se trouve dans le dossier war\WEB-INF\lib.
    Il faudra donc que tu le rajoutes
    - en copiant/collant l'exemplaire qui se trouve dans le dossier plugin gwt d'eclipse
    - ou en allant dans la vue Problem, menu contextuel, fix problem, synchronize, ok.
    Fichiers attachés Fichiers attachés

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 17
    Points : 15
    Points
    15
    Par défaut
    Un grand MERCI !!!!!
    Cela fonctionne à merveille !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Faire communiquer une application GWT avec une applet Java ?
    Par Beginner. dans le forum GWT et Vaadin
    Réponses: 1
    Dernier message: 08/02/2013, 21h16
  2. Test d'une application GWT avec JMeter
    Par passion_info dans le forum GWT et Vaadin
    Réponses: 1
    Dernier message: 21/09/2011, 15h08
  3. Réponses: 4
    Dernier message: 23/02/2010, 11h00
  4. Réponses: 2
    Dernier message: 23/03/2005, 21h58

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