Spring Boot Google OAuth2登录,在本章中,我们将了解如何使用 Spring Boot 应用程序和 Gradle 构建来添加 Google OAuth2 登录。

首先,在构建配置文件中添加 Spring Boot OAuth2 安全依赖项,下面给出了构建配置文件。

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 = 'net.zuze.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')
}

现在,在主 Spring Boot 应用程序类文件中通过 Spring Boot 进行身份验证后,添加 HTTP 端点以从 Google 读取用户主体,如下所示 –

package net.zuze.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;
   }
}

现在,编写一个配置文件以启用 OAuth2SSO 以实现 Web 安全并删除对 index.html 文件的身份验证,如下所示 –

package net.zuze.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();
   }
}

接下来,在静态资源下添加index.html文件,并添加重定向到用户HTTP端点的链接以读取Google用户主体,如下所示 –

<!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>

注意– 在 Google Cloud 控制台中 – 启用 Gmail 服务、分析服务和 Google+ 服务 API。

然后,转到“凭据”部分并创建凭据并选择 OAuth 客户端 ID。

credentials section

接下来,在 OAuth2 同意屏幕中提供产品名称。

product name in oauth2 consent screen

接下来,选择应用程序类型为“Web 应用程序”,提供授权 JavaScript 来源和授权重定向 URI。

authorized redirect uris

现在,您的 OAuth2 客户端 ID 和客户端密钥已创建。

oauth2 client id created

接下来,在应用程序属性文件中添加客户端 ID 和客户端密钥。

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

现在,您可以创建可执行 JAR 文件,并使用以下 Gradle 命令运行 Spring Boot 应用程序。

对于 Gradle,您可以使用如下所示的命令 –

gradle clean build

“BUILD SUCCESSFUL”后,您可以在build/libs目录下找到JAR文件。

使用命令 java –jar <JARFILE> 运行 JAR 文件,应用程序将在 Tomcat 端口 8080 上启动。

现在点击 URL http://localhost:8080/并单击 Google Login 链接。google login link

它将重定向到 Google 登录屏幕并提供 Gmail 登录详细信息。google login screen

如果登录成功,我们将收到Gmail用户的Principal对象。

principal object of the gmail user

Spring Boot Google OAuth2登录 推荐

使用GPT-4开发游戏

领券有优惠