Khi làm việc với các ứng dụng cần bảo mật thì bắt buộc các bạn phải biết đến 2 khái niệm authentication và authorization. Nói nôm na thì authentication liên quan đến việc ai được quyền sử dụng ứng dụng còn authorization liên quan đến việc những resource nào, những phần nào của ứng dụng mà các bạn được phép sử dụng. Đối với các ứng dụng web có sử dụng Spring framework thì các bạn có thể sử dụng Spring Security để hiện thực 2 khái niệm này. Cụ thể nó như thế nào? Chúng ta sẽ bắt đầu tìm hiểu về Spring Security trong bài viết này các bạn nhé!

Đầu tiên, mình sẽ tạo mới một ứng dụng Spring MVC để làm ví dụ các bạn nhé:

*

Để làm việc với Spring Security, các bạn cần khai báo dependency spring-security-web và spring-security-config như sau:

XHTML
org.springframework.security spring-security-web ${org.springframework.security-version} org.springframework.security spring-security-config ${org.springframework.security-version}
1
2
3
4
5
6
7
8
9
10
org.springframework.security
spring-security-web
${org.springframework.security-version}
org.springframework.security
spring-security-config
${org.springframework.security-version}

với:

XHTML

… 5.1.5.RELEASE
1
2
3
4

Đang xem: Cơ chế hoạt Động của spring security là gì, hướng dẫn lập trình spring security

5.1.5.RELEASE
Hiện tại khi chạy ứng dụng, các bạn sẽ thấy kết quả như sau:

*

Để làm ví dụ cho phần authentication với Spring Security, mình sẽ thêm code để bắt buộc người dùng, muốn xem được trang trên, họ phải đăng nhập sử dụng username và password.

Nhưng trước tiên, mình cần nói với các bạn là: chúng ta có 2 cách để hiện thực Spring Security, một là sử dụng tập tin cấu hình và cách thứ hai là sử dụng các Java annotation mà Spring Security hỗ trợ.

Xem thêm: Wages Là Gì – Định Nghĩa Của Từ Wage Trong Từ Điển Lạc Việt

Ok, quay trở lại với ví dụ của chúng ta, mình sẽ sử dụng tập tin cấu hình để hiện thực Spring Security. Để làm được điều này, các bạn hãy tạo mới một tập tin cấu hình cho Spring Security tên là security.xml nằm trong thư mục src/main/webapp/WEB-INF/spring. Tập tin này sẽ định nghĩa các bean cần thiết của Spring Security trong Spring container. Nội dung của tập tin này như sau:

XHTML
1
2
3
4
5
6
7
8
9
10
11
12
xmlns=”http://www.springframework.org/schema/security”
xmlns:beans=”http://www.springframework.org/schema/beans”
xsi:schemaLocation=”http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/security https://www.springframework.org/schema/security/spring-security.xsd”>
/>
name=”khanh” password=”{noop}123456″ authorities=”ROLE_USER” />

Khai báo là khai báo quan trọng, Spring sẽ khởi tạo các bean cần thiết của Spring Security dựa vào khai báo của thẻ này các bạn nhé! Ở đây, vì chúng ta chỉ cần enable chức năng authentication của Spring Security cho ứng dụng của mình nên các bạn chỉ cần khai báo như thế!

Khai báo cho phép chúng ta có thể tạo mới thông tin user in-memory dùng để authenticate vào ứng dụng của chúng ta. Chúng ta có thể khai báo thông tin user sử dụng một tập tin .properties hoặc sử dụng tag như trong ví dụ của mình để tạo in-memory user. Tất nhiên, chúng ta còn có thể khai báo để lấy thông tin user từ các nguồn khác nữa như database chẳng hạn. Để đơn giản, mình đã sử dụng in-memory user để giới thiệu với các bạn trong bài viết này.

Xem thêm: Syll Là Gì ? Sơ Yếu Lý Lịch Giống Với Cv Không? Cách Viết Sơ Yếu Lý Lịch Chuyên Nghiệp 2021

Trong khai báo thông tin user, như các bạn thấy, chúng ta cũng sẽ cần phải khai báo role của user sử dụng attribute authorities, cái này được sử dụng cho phần authorization. Phần password, thật ra password mình khai báo chỉ là “123456” mà thôi, chữ “{noop}” có một ý nghĩa khác liên quan đến password encoder, mình sẽ đề cập rõ hơn trong những bài viết sau các bạn nhé!

OK, vậy là chúng ta đã có tập tin cấu hình cơ bản cần phải có của một ứng dụng Spring Security. Chúng ta cần phải khai báo tập tin cấu hình này với web servlet trong tập tin web.xml của ứng dụng.

Leave a Reply

Your email address will not be published. Required fields are marked *