Triển khai xác thực & ủy quyền dựa trên vai trò bảo mật mùa xuân với Spring Boot 3.0
Xin chào các học viên, ở đây chúng ta sẽ tìm hiểu về triển khai bảo mật mùa xuân với khởi động mùa xuân. Bảo mật mùa xuân cung cấp xác thực, ủy quyền và bảo vệ chống lại các cuộc tấn công phổ biến.

Xác thực - Xác thực là cách chúng tôi xác minh danh tính của người dùng đang cố truy cập vào một tài nguyên cụ thể, sau khi xác thực được thực hiện, chúng tôi biết danh tính và có thể thực hiện ủy quyền.
Ủy quyền - Ủy quyền có nghĩa là cấp quyền truy cập tài nguyên/url cụ thể.
Các bước triển khai bảo mật mùa xuân
Bước 1: Thêm phụ thuộc Spring Security vào POM.XML

Bước 2: Tạo lớp cấu hình, thêm phương thức xác thực và phân quyền.

@EnableWebSecurity cung cấp cấu hình bảo mật mặc định cho ứng dụng của chúng tôi. Bảo mật mặc định kích hoạt cả bộ lọc bảo mật HTTP và chuỗi bộ lọc bảo mật , đồng thời áp dụng xác thực cơ bản cho các điểm cuối của chúng tôi.
@Configuration yêu cầu Spring Boot quét lớp để tìm định nghĩa bean và đăng ký chúng với ngữ cảnh ứng dụng.
Phương thứcAuthenticProvider() được sử dụng để lưu trữ tất cả các deatils của người dùng như tên người dùng, mật khẩu, vai trò. Spring Security chứa lớp DaoAuthenticationProvider chứa userDetailsService và passwordEncoder.passwordEncoder() được sử dụng để mã hóa mật khẩu và mật khẩu được mã hóa được lưu trữ trong DB.
Phương thức SecutityFilterChain() là cấp quyền cho các tài nguyên, tại đây
.requestMatchers("/products/welcome","/products/new").permitAll() là cấp quyền truy cập cho tất cả người dùng, bất kỳ người dùng nào cũng có thể truy cập hai url đó.
requestMatchers(“/products/**”).authenticated() là cấp quyền truy cập cho người dùng đã xác thực.
Bước 3: Triển khai ủy quyền dựa trên vai trò

@PreAuthorize
chú thích được sử dụng để chỉ định một biểu thức sẽ được đánh giá trước khi phương thức được thực thi. Nếu biểu thức đánh giá là đúng, thì phương thức được thực thi, ngược lại, một AccessDeniedException sẽ được đưa ra.
Phương getAllProducts()
thức chỉ có thể được thực thi bởi người dùng có ROLE_USER
vai trò, trong khi getProductById()
phương thức có thể được thực thi bởi người dùng có vai ROLE_ADMIN
trò.
Kiểm tra việc thực hiện

Đã thêm mã mẫu để kiểm tra việc triển khai.

Sau khi cung cấp thông tin đăng nhập cho người dùng, người dùng có thể truy cập điểm cuối của người dùng
Khi người dùng cố gắng truy cập điểm cuối của Quản trị viên bằng thông tin đăng nhập của người dùng, trang lỗi sẽ hiển thị

Lưu ý: Nếu bạn muốn mã github hoạt động của việc triển khai này, vui lòng theo dõi tôi và nhận xét ID email của bạn. Tôi sẽ gửi link mã nguồn vào email của bạn.
Phần 2: Xác thực & ủy quyền bảo mật mùa xuân với JWT
Tham khảo các liên kết cho các Khái niệm khởi động mùa xuân khác:
Hướng dẫn AOP mùa xuân
Hướng dẫn ghi nhật ký khởi động mùa xuân
Cấu hình tập trung trong Spring Boot
Các chú thích Hibernate được sử dụng phổ biến nhất
Các mẫu thiết kế microservice quan trọng cho các cuộc phỏng vấn