Spring Boot - Đăng nhập Google OAuth2
Trong chương này, chúng ta sẽ xem cách thêm Đăng nhập Google OAuth2 bằng cách sử dụng ứng dụng Spring Boot với bản dựng Gradle.
Đầu tiên, thêm phần phụ thuộc bảo mật Spring Boot OAuth2 vào tệp cấu hình bản dựng của bạn và tệp cấu hình bản dựng của bạn được cung cấp bên dưới.
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')
}
Bây giờ, hãy thêm Điểm cuối HTTP để đọc Hiệu trưởng người dùng từ Google sau khi xác thực qua Spring Boot trong tệp lớp ứng dụng Spring Boot chính như được cung cấp bên dưới -
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;
}
}
Bây giờ, hãy viết tệp Cấu hình để bật OAuth2SSO cho bảo mật web và xóa xác thực cho tệp index.html như được hiển thị -
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();
}
}
Tiếp theo, thêm tệp index.html trong tài nguyên tĩnh và thêm liên kết để chuyển hướng đến Điểm cuối HTTP của người dùng để đọc Nguyên tắc của người dùng Google như được hiển thị bên dưới -
<!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 - Trong bảng điều khiển Google Cloud - Bật Dịch vụ Gmail, Dịch vụ Analytics và (các) API dịch vụ Google+.
Sau đó, chuyển đến phần Thông tin đăng nhập và tạo thông tin xác thực và chọn ID ứng dụng khách OAuth.
Tiếp theo, cung cấp Tên sản phẩm trong màn hình chấp thuận OAuth2.
Tiếp theo, chọn Loại ứng dụng là “Ứng dụng web”, cung cấp nguồn gốc JavaScript được ủy quyền và URI chuyển hướng được ủy quyền.
Bây giờ, Mã ứng dụng khách OAuth2 và Bí mật khách hàng của bạn đã được tạo.
Tiếp theo, thêm Mã ứng dụng khách và Bí mật ứng dụng khách trong tệp thuộc tính ứng dụng của bạ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
Bây giờ, bạn có thể tạo tệp JAR thực thi và chạy ứng dụng Spring Boot bằng cách sử dụng lệnh Gradle sau.
Đối với Gradle, bạn có thể sử dụng lệnh như sau:
gradle clean build
Sau khi “XÂY DỰNG THÀNH CÔNG”, bạn có thể tìm thấy tệp JAR trong thư mục build / libs.
Chạy tệp JAR bằng cách sử dụng lệnh java –jar <JARFILE> và ứng dụng được khởi động trên cổng Tomcat 8080.
Bây giờ hãy nhấn vào URL http://localhost:8080/ và nhấp vào liên kết Đăng nhập Google.
Nó sẽ chuyển hướng đến màn hình đăng nhập Google và cung cấp chi tiết đăng nhập Gmail.
Nếu đăng nhập thành công, chúng tôi sẽ nhận được đối tượng Chính của người dùng Gmail.