Sử dụng Spring Security trong Spring Boot

Công Nghệ
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...

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:

Sử dụng Spring Security trong Spring BootSử dụng Spring Security trong Spring Boot

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.

Sử dụng Spring Security trong Spring BootSử dụng Spring Security trong Spring Boot

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:

Xem thêm Việc làm Developer hấp dẫn trên Station D

Bài viết liên quan

Ngành IT: Làm việc “trên mây” kiếm nhiều tiền nhất hiện nay

Ngành IT: Làm việc “trên mây” kiếm nhiều tiền nhất hiện nay

Kết quả từ cuộc khảo sát đầu năm của Station D về lương bổng của lập trình viên cho thấy nhiều thay đổi đã và đang diễn ra trong ngành IT – cuộc khảo sát tập trung vào các câu hỏi về khối lượng công việc, triển vọng cũng như...

By stationd
Đâu chỉ mỗi Bitcoin, công nghệ Blockchain còn nhiều ứng dụng hơn thế!

Đâu chỉ mỗi Bitcoin, công nghệ Blockchain còn nhiều ứng dụng hơn thế!

Khi nhắc đến blockchain , lập tức mọi người thường nghĩ ngay đến các loại tiền mã hóa, chẳng hạn như bitcoin. Tuy nhiên, blockchain lại là công nghệ tạo ra tiền mã hóa nhưng bản thân công nghệ này không phải là tiền mã hóa như cách mà chúng...

By stationd
Mock phương thức static trong Unit Test sử dụng PowerMock

Mock phương thức static trong Unit Test sử dụng PowerMock

Bài viết được sự cho phép của tác giả Nguyễn Hữu Khanh Trong bài viết này, mình sẽ hướng dẫn các bạn Mock các phương thức static trong Unit Test các bạn nhé! Nếu bạn nào chưa biết về Mock trong Unit Test thì mình có thể nói sơ qua...

By stationd