TP Web Service
S. Salva

Ending


1. API nécessaires

  • Maven
  • Vous pouvez utiliser votre propre compte Google. J'ai aussi crée un compte (login:iut.info63@gmail.com, pass:info6300013) et 13 applications: info63appXX (0 à 12), voir dans la console. Choisissez en une (non choisie par quelqu'un d'autre...)
  • Installez Google Cloud SDK. Vous l'utilisez en ligne de commande (gcloud...) Google Cloud plugin pour Eclipse si vous voulez utiliser un IDE
  • Lib Jeysey
  • Si vous souhaitez utiliser Eclipse+Maven, ajoutez le pluggin Google pour Eclipse via le Market place. Voir ici. Ajoutez le serveur Jetty via le Market place.Authentifiez vous à GAE dans Eclipse
  • Testez votre service localement, (notez qu'il utilisera le vrai Datastore de GAE) en utilisant un navigateur. Vérifiez également que le datastore est modifié via la console d'admin de GAE (https://console.cloud.google.com/).

    2. Composition de services


    Créez un service composite à partir de 2 services existants (sur HTTP), l'un déployé sur GAE, l'autre étant votre dernier service sur Heroku. Le service sur GAE sera très simple et aura pour fonction d'appeler le service déployé sur Heroku.

    Il faut impérativement gérer les erreurs entre services:


    Exemple: Considérez Client->Service1 -> Service2

  • Si Service2 lève une exception, une réponse HTTP avec un statut différent de 200 doit être reçue par Service1.
  • Dans ce même cas, Service1 doit retourner une erreur au client avec une exception ou une réponse avec un statut différent de 200.

  • En plus, Service1 doit gérer ces propres erreurs (lever une exception ou retourner une réponse avec un statut différent de 200 en cas d'erreur).

  • Testez via le navigateur ou en créant un client Guzzle
  • 3. Retour sur AppEngine

    Reprenez l'un de vos anciens services et tentons de le sécuriser avec SSL et BasicAuth. Si vous souhaitez sécuriser avec les outils Google voir ici

    A

    Passez à HTTPS en modifiant le fichier app.yml voir ici

    Testez sous GAE


    B

    Ajoutez un login mdp (BasicAuth) en ajoutant une classe de onfiguration du type:

    @EnableWebSecurity
    public class SecurityConfig {
    
            @Bean
            public UserDetailsService userDetailsService() {
                InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
                manager.createUser(User.withDefaultPasswordEncoder().username("login").password("password").roles("root").roles("ACTUATOR").build());
                return manager;
            }
    }

    N'oubliez pas de mettre en place une ServletInitializer, (déjà vu) du type :

    public class ServletInitializer extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Application.class); } }
    C
    Testez avec Postman ou un client Guzzle