Sử dụng Spring Security trong Spring Boot
Bài viết được sự cho phép của tác giả Nguyễn Hữu Khanh
Mình đã giới thiệu với các bạn cách cài đặt và cấu hình để sử dụng Spring Security trong các ứng dụng Spring MVC. Với Spring Boot application, thì việc cấu hình Spring Sẹcurity sẽ đơn giản hơn rất nhiều. Chúng ta không cần phải làm từng step để cấu hình cho phần authentication và authorization của ứng dụng. Spring Boot hỗ trợ chúng ta giảm bớt rất nhiều thao tác với những cấu hình mặc định cho Spring Security. Cụ thể như thế nào? Mình sẽ chia sẻ với các bạn một số kiến thức về Spring Security trong Spring Boot application các bạn nhé!
Đầu tiên, mình sẽ tạo mới một Spring Boot application:
với Spring Web và Spring Security dependencies như sau:
Kết quả:
Ngay lúc này, các bạn chạy ứng dụng lên rồi request tới địa chỉ http://localhost:8080, các bạn sẽ thấy trang login mặc định của Spring Security được hiển thị như sau:
Rõ ràng là, Spring Boot đã có những cấu hình mặc định cho Spring Security ngay khi chúng ta thêm dependency của nó. Username mặc định để các bạn có thể đăng nhập vào là “user” và password được generate và in ra trong console log đó các bạn.
Nhập thông tin username, password rồi nhấn nút Sign In, các bạn sẽ thấy kết quả như sau:
Đây là do chúng ta chưa định nghĩa một request nào trong ứng dụng của chúng ta đó các bạn. Nếu mình định nghĩa controller như sau:
package com.huongdanjava.springboot.springsecurity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { @GetMapping("") public String sayHello() { return "Hello"; } }
thì các bạn sẽ thấy kết quả như sau:
Các bạn có thể thay đổi username và password mặc định này bằng cách cấu hình 2 property sau trong tập tin application.properties:
spring.security.user.name=khanh spring.security.user.password=123456
Chạy lại ứng dụng, các bạn sẽ thấy default password sẽ không được generate nữa và chúng ta có thể sử dụng username và password mà mình đã khai báo ở trên để đăng nhập.
Spring Boot sử dụng cấu hình mặc định của class WebSecurityConfigurerAdapter để cấu hình cho Spring Security. Nếu take a look vào code của class WebSecurityConfigurerAdapter, các bạn sẽ thấy mặc định thì Spring Security cấu hình cho phần authorization như sau:
protected void configure(HttpSecurity http) throws Exception { this.logger.debug("Using default configure(HttpSecurity). " + "If subclassed this will potentially override subclass configure(HttpSecurity)."); http.authorizeRequests((requests) -> requests.anyRequest().authenticated()); http.formLogin(); http.httpBasic(); }
Như các bạn thấy, mặc định Spring Security sẽ chặn hết tất cả các request, tự động generate login form và sử dụng http basic cho phần authentication. Như mình đã nói với các bạn trong bài viết về Cấu hình Spring Security sử dụng WebSecurityConfigurerAdapter và AbstractSecurityWebApplicationInitializer, chúng ta có thể override class WebSecurityConfigurerAdapter để thay đổi cấu hình này.
package com.huongdanjava.springboot.springsecurity; 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 public class SpringSecurityConfiguration extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { super.configure(http); } }
và tất nhiên, các bạn cũng có thể override phương thức configure(AuthenticationManagerBuilder auth) để thay thế cho phần cấu hình authentication nha các bạn!
Bài viết gốc được đăng tải tại huongdanjava.com
Có thể bạn quan tâm:
- Hot Reload với dự án Spring Boot trên IntelliJ
- Bảo mật ứng dụng Java web bởi Spring Security
- Xác thực trong Spring Cloud Config (Spring Cloud Config Authenticate)
Xem thêm Việc làm Developer hấp dẫn trên TopDev
- B BenQ RD Series – Dòng Màn Hình Lập Trình 4k+ Đầu Tiên Trên Thế Giới
- i iOS 18 có gì mới? Có nên cập nhật iOS 18 cho iPhone của bạn?
- G Gamma AI là gì? Cách tạo slide chuyên nghiệp chỉ trong vài phút
- P Power BI là gì? Vì sao doanh nghiệp nên sử dụng PBI?
- K KICC HCMC x TOPDEV – Bước đệm nâng tầm sự nghiệp cho nhân tài IT Việt Nam
- T Trello là gì? Cách sử dụng Trello để quản lý công việc
- T TOP 10 SỰ KIỆN CÔNG NGHỆ THƯỜNG NIÊN KHÔNG NÊN BỎ LỠ
- T Tìm hiểu Laptop AI – So sánh Laptop AI với Laptop thường
- M MySQL vs MS SQL Server: Phân biệt hai RDBMS phổ biến nhất
- S SearchGPT là gì? Công cụ tìm kiếm mới có thể đánh bại Google?