Spring Boot - Connexion à Google OAuth2

Dans ce chapitre, nous allons voir comment ajouter la connexion Google OAuth2 à l'aide de l'application Spring Boot avec la version Gradle.

Tout d'abord, ajoutez la dépendance de sécurité Spring Boot OAuth2 dans votre fichier de configuration de construction et votre fichier de configuration de construction est indiqué ci-dessous.

buildscript {
   ext {
      springBootVersion = '1.5.8.RELEASE'
   }
   repositories {
      mavenCentral()
   }
   dependencies {
      classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
   }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'

group = 'com.tutorialspoint.projects'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
   mavenCentral()
}
dependencies {
   compile('org.springframework.boot:spring-boot-starter')
   testCompile('org.springframework.boot:spring-boot-starter-test')
   compile('org.springframework.security.oauth:spring-security-oauth2')
   compile('org.springframework.boot:spring-boot-starter-web')
   testCompile('org.springframework.boot:spring-boot-starter-test')
}

Maintenant, ajoutez le point de terminaison HTTP pour lire le User Principal de Google après l'authentification via Spring Boot dans le fichier de classe d'application Spring Boot principal comme indiqué ci-dessous -

package com.tutorialspoint.projects.googleservice;

import java.security.Principal;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class GoogleserviceApplication {
   public static void main(String[] args) {
      SpringApplication.run(GoogleserviceApplication.class, args);
   }
   @RequestMapping(value = "/user")
   public Principal user(Principal principal) {
      return principal;
   }
}

Maintenant, écrivez un fichier de configuration pour activer OAuth2SSO pour la sécurité Web et supprimez l'authentification pour le fichier index.html comme indiqué -

package com.tutorialspoint.projects.googleservice;

import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration
@EnableOAuth2Sso
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
   @Override
   protected void configure(HttpSecurity http) throws Exception {
      http
         .csrf()
         .disable()
         .antMatcher("/**")
         .authorizeRequests()
         .antMatchers("/", "/index.html")
         .permitAll()
         .anyRequest()
         .authenticated();
   }
}

Ensuite, ajoutez le fichier index.html sous les ressources statiques et ajoutez le lien pour rediriger vers l'utilisateur HTTP Endpoint pour lire le principal de l'utilisateur Google comme indiqué ci-dessous -

<!DOCTYPE html>
<html>
   <head>
      <meta charset = "ISO-8859-1">
      <title>Insert title here</title>
   </head>
   <body>
      <a href = "user">Click here to Google Login</a>
   </body>
</html>

Note - Dans la console Google Cloud - Activez les services Gmail, les services d'analyse et les API du service Google+.

Ensuite, accédez à la section Informations d'identification et créez des informations d'identification et choisissez OAuth Client ID.

Ensuite, indiquez un nom de produit dans l'écran de consentement OAuth2.

Ensuite, choisissez le type d'application comme «application Web», indiquez les origines JavaScript autorisées et les URI de redirection autorisés.

À présent, votre ID client OAuth2 et votre secret client sont créés.

Ensuite, ajoutez l'ID client et le secret client dans le fichier de propriétés de votre application.

security.oauth2.client.clientId = <CLIENT_ID>
security.oauth2.client.clientSecret = <CLIENT_SECRET>
security.oauth2.client.accessTokenUri  =  https://www.googleapis.com/oauth2/v3/token
security.oauth2.client.userAuthorizationUri  =  https://accounts.google.com/o/oauth2/auth
security.oauth2.client.tokenName = oauth_token
security.oauth2.client.authenticationScheme = query
security.oauth2.client.clientAuthenticationScheme = form
security.oauth2.client.scope = profile email

security.oauth2.resource.userInfoUri  =  https://www.googleapis.com/userinfo/v2/me
security.oauth2.resource.preferTokenInfo = false

À présent, vous pouvez créer un fichier JAR exécutable et exécuter l'application Spring Boot à l'aide de la commande Gradle suivante.

Pour Gradle, vous pouvez utiliser la commande comme indiqué -

gradle clean build

Après «BUILD SUCCESSFUL», vous pouvez trouver le fichier JAR dans le répertoire build / libs.

Exécutez le fichier JAR à l'aide de la commande java –jar <JARFILE> et l'application est démarrée sur le port Tomcat 8080.

Cliquez maintenant sur l'URL http://localhost:8080/ et cliquez sur le lien de connexion Google.

Il redirigera vers l'écran de connexion Google et fournira des informations de connexion Gmail.

Si la connexion réussit, nous recevrons l'objet Principal de l'utilisateur Gmail.