• Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

Cách Tích Hợp Đăng Nhập Google, GitHub Và Facebook Trong Ứng Dụng Java (Spring Boot)

Lomanu4 Оффлайн

Lomanu4

Команда форума
Администратор
Регистрация
1 Мар 2015
Сообщения
1,481
Баллы
155
Việc tích hợp đăng nhập bằng Google, GitHub hoặc Facebook đang trở thành một tiêu chuẩn phổ biến trong các hệ thống web hiện đại sử dụng Java (Spring Boot). Không chỉ mang lại trải nghiệm người dùng mượt mà hơn, hình thức đăng nhập này còn giúp đơn giản hóa việc xác thực và giảm thiểu rủi ro bảo mật liên quan đến mật khẩu. Bài viết dưới đây hướng dẫn cách cấu hình đăng nhập xã hội một cách hiệu quả và dễ hiểu.

I. Tổng quan về OAuth 2.0
Tất cả các nền tảng đăng nhập xã hội lớn hiện nay đều sử dụng OAuth 2.0, một giao thức ủy quyền cho phép ứng dụng của bạn truy cập thông tin người dùng từ bên thứ ba (Google, Facebook, GitHub) mà không cần trực tiếp xử lý mật khẩu của họ. Spring Security hỗ trợ tích hợp OAuth 2.0 rất tốt thông qua spring-security-oauth2-client.

II. Chuẩn Bị Môi Trường
Java 17+
Spring Boot 3.x
Spring Security
Maven hoặc Gradle
Thymeleaf (hoặc bất kỳ template engine nào)
IDE như IntelliJ hoặc VS Code Thêm dependency trong pom.xml:


<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
</dependencies>

III. Cấu hình đăng nhập Google
1. Đăng ký ứng dụng Google

Truy cập:

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.


Tạo một project mới
Chọn "OAuth consent screen" → chọn "External"
Điền các thông tin cơ bản (tên app, email)
Chọn "Credentials" → Tạo "OAuth 2.0 Client ID"
Ứng dụng: Web application
Authorized redirect URIs:

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.



2. Cấu hình application.yml


spring:
security:
oauth2:
client:
registration:
google:
client-id: YOUR_CLIENT_ID
client-secret: YOUR_CLIENT_SECRET
scope: profile, email
provider:
google:
authorization-uri:

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.


token-uri:

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.


user-info-uri:

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.



IV. Cấu hình đăng nhập với GitHub
1. Tạo OAuth App trên GitHub

Truy cập:

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.


New OAuth App:
Homepage:

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.


Authorization callback URL:

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.



2. Thêm vào application.yml:


spring:
security:
oauth2:
client:
registration:
github:
client-id: YOUR_CLIENT_ID
client-secret: YOUR_CLIENT_SECRET
scope: read:user,user:email

V. Cấu hình đăng nhập với Facebook
1. Tạo OAuth App trên GitHub

Truy cập:

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.


Tạo App → Chọn Consumer
Thêm sản phẩm "Facebook Login" → Cấu hình:
Valid OAuth Redirect URIs:

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.



2. Thêm vào application.yml:


spring:
security:
oauth2:
client:
registration:
facebook:
client-id: YOUR_CLIENT_ID
client-secret: YOUR_CLIENT_SECRET
scope: email, public_profile

VI. Cấu hình Security


@Configuration
@EnableWebSecurity
public class SecurityConfig {

@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests(auth -> auth
.requestMatchers("/", "/login**").permitAll()
.anyRequest().authenticated()
)
.oauth2Login()
.defaultSuccessUrl("/home", true);
return http.build();
}
}

VII. Hiển thị giao diện


<!-- templates/index.html -->
<!DOCTYPE html>
<html xmlns:th="

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

">
<head>
<title>Đăng nhập</title>
</head>
<body>
<h2>Đăng nhập bằng:</h2>
<a href="/oauth2/authorization/google">Google</a><br>
<a href="/oauth2/authorization/github">GitHub</a><br>
<a href="/oauth2/authorization/facebook">Facebook</a>
</body>
</html>

VIII. Hiển thị thông tin người dùng sau khi đăng nhập


@Controller
public class HomeController {

@GetMapping("/home")
public String home(Model model, OAuth2AuthenticationToken authentication) {
OAuth2User user = authentication.getPrincipal();
model.addAttribute("name", user.getAttribute("name"));
model.addAttribute("email", user.getAttribute("email"));
return "home";
}
}

<!-- templates/home.html -->
<!DOCTYPE html>
<html xmlns:th="

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

">
<head><title>Trang chủ</title></head>
<body>
<h2>Xin chào, <span th:text="${name}"></span>!</h2>
<p>Email: <span th:text="${email}"></span></p>
</body>
</html>

Hiện tại thì mình đang học môn SEO trên trường, nên trong bài viết mình xin để một link về trang web mình SEO cho môn học:

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

. Cảm ơn các bạn đã đọc bài viết.


Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

 
Вверх Снизу