Bài tập Java có lời giải

Xác thực API đơn giản bằng Spring security

This entry is part 31 of 31 in the series Tự học lập trình Java

Xin chào các bạn, ở bài trước mình đã hướng dẫn các bạn cách để tạo một REST API đơn giản rồi ( xem lại tại đây ). Hôm nay mình sẽ hướng dẫn các bạn cách để xác thực một API bằng Spring security và JWT ( JSON Web Token ).

Để đơn giản bài viết mình sẽ chia thành hai phần cho các bạn tiện theo dõi :

  • Phần 1: Xây dựng một REST API đơn giản trả về dòng "Hello".
  • Phần 2: Bắt buộc phải xác thực mới sử dụng được API ở trên.

Xây dựng REST API đơn giản với Spring boot

Đầu tiên chúng ta sẽ thêm một số thư viện như bên dưới (ở đây mình dùng maven):

Nếu các bạn chưa biết cách để khởi tại một project Spring nhanh thì có thể tham khảo bài viết cách cài plugin Spring Assistant của mình ở đây.

Sau đó chúng ta thêm lớp SpringSecurityJwtApplication với annotation @SpringBootApplication

Tiếp theo chúng ta sẽ tạo một RestController trả về "Hello"

Đến đây chúng ta chạy Application lên và dùng Postman để kiểm tra

Xác thực REST API với Spring security
Xác thực REST API với Spring security

Xác thực REST API với Spring security

Sau khi đã chạy được API thì tiếp theo chúng ta sẽ xác thực API bằng Spring security và JWT. Bây giờ file pom.xml sẽ trong như sau:

Tiếp theo chúng ta sẽ tạo ra hai model để nhận request và trả response cho client. Khi request yêu cầu xác thực thì phía người dùng phải gửi lên thông tin username và password. Còn khi trả response thì sẽ trả ra một token, người dùng sử dụng token đó để truy cập vào trang “/hello” ở trên.

 

Tiếp theo chúng ta tạo một class JwtUserDetailsService triển khai UserDetailService để Spring Security cung cấp đối tượng UserDetails phục vụ cho việc xác thực. Có một điểm lưu ý ở đây là mình sẽ cung cấp cho chương trình một user (username: tamvo, password: 123). Và password ở đây đã được mã hóa bằng thuật toán Bcrypt.

 

Tiếp theo chúng ta tạo lớp JwtAuthenticationEntryPoint để gửi mã lỗi về cho người dùng nếu truy cập vào api “/hello” mà chưa được xác thực.

 

Tiếp theo sẽ tạo lớp

 

 

 

Spring security
Lấy token
Sử dụng token để truy cập vào api

Các bạn có thể tham khảo project tại đây: https://github.com/tamvo-dev/spring-security-JWT.git

Bài viết của mình đến đây là kết thúc cám ơn các bạn đã theo dõi !

Similar Posts

Subscribe
Notify of
guest
0 Bình luận
Inline Feedbacks
View all comments