Spring Boot: inicio de sesión de Google OAuth2

En este capítulo, veremos cómo agregar el inicio de sesión de Google OAuth2 mediante la aplicación Spring Boot con la compilación Gradle.

Primero, agregue la dependencia de seguridad Spring Boot OAuth2 en su archivo de configuración de compilación y su archivo de configuración de compilación se muestra a continuación.

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')
}

Ahora, agregue el extremo HTTP para leer el User Principal de Google después de autenticarse a través de Spring Boot en el archivo de clase de la aplicación Spring Boot principal como se indica a continuación:

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;
   }
}

Ahora, escriba un archivo de configuración para habilitar OAuth2SSO para la seguridad web y elimine la autenticación para el archivo index.html como se muestra:

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();
   }
}

A continuación, agregue el archivo index.html debajo de los recursos estáticos y agregue el enlace para redirigir al extremo HTTP del usuario para leer el Principal del usuario de Google como se muestra a continuación:

<!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 - En la consola de Google Cloud: habilite los servicios de Gmail, los servicios de análisis y las API de servicios de Google+.

Luego, vaya a la sección Credenciales y cree una credencial y elija OAuth Client ID.

A continuación, proporcione un Nombre de producto en la pantalla de consentimiento de OAuth2.

A continuación, elija el Tipo de aplicación como "Aplicación web", proporcione los orígenes de JavaScript autorizados y los URI de redireccionamiento autorizados.

Ahora, se crea su ID de cliente de OAuth2 y su secreto de cliente.

A continuación, agregue el ID de cliente y el secreto de cliente en el archivo de propiedades de su aplicación.

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

Ahora, puede crear un archivo JAR ejecutable y ejecutar la aplicación Spring Boot mediante el siguiente comando de Gradle.

Para Gradle, puede usar el comando como se muestra:

gradle clean build

Después de "BUILD SUCCESSFUL", puede encontrar el archivo JAR en el directorio build / libs.

Ejecute el archivo JAR utilizando el comando java –jar <JARFILE> y la aplicación se inicia en el puerto de Tomcat 8080.

Ahora presiona la URL http://localhost:8080/ y haga clic en el enlace de inicio de sesión de Google.

Redirigirá a la pantalla de inicio de sesión de Google y proporcionará los detalles de inicio de sesión de Gmail.

Si el inicio de sesión es exitoso, recibiremos el objeto Principal del usuario de Gmail.