• Ở bài viết trước mình đã hướng dẫn một cách để có thể truy cập những API bị giới hạn quyền truy cập bằng cách sử dụng JWT. Và ở bài viết này mình sẽ hướng dẫn mọi người truy cập những API đó bằng cách sử dụng Oauth2
  • Trước hết chúng ta sẽ khởi tạo dự án và chọn những thư viện như sau:

+) Chúng ta tạo dự án mới và chọn Spring Initializr sau đó chọn next

Oauth2

+) Tiếp theo tạ có thể cấu hình như trong ảnh, nếu bạn sử dụng maven thì ở mục type chọn Maven Project, mục group và artifact bạn có thể đặt theo tên mình muốn ở dự án này mình chọn theo kiểu gradle và jdk8:

Oauth2

+) Sau đó ta chọn những thư viện cần thiết như trong hình:

Oauth2

  • Sau khi làm xong những bước chuẩn bị trên chúng ta sẽ tạo các class User, Role, UserPrinciple giống như trong bài viết này của mình https://blog.codegym.vn/2020/02/20/huong-dan-ve-spring-security-va-jwt-phan-1/
  • Sau khi chúng ta tạo đầy đủ các Repository và Service cho 2 class là User và Role theo đường link ở trên chúng ta bắt đầu tiến hành cấu hình:

+) Đầu tiên chúng ta tạo class AuthorizationServerConfig. Class này thì sẽ được kế thừa từ AuthorizationServerConfigurerAdapter và nó sẽ là class tạo ra những đoạn token riêng cho bên phía client:

Vì ở đây mình dùng phiên bản Spring Boot 2.24 nên CLIENT_SECRET cần phải được mã hóa mới có thể chạy được còn đối với những bạn dùng phiên bản Spring Boot < 2 thì có thể viết dạng chuỗi bình thường

+) Sau đó chúng ta tạo file ResourceServerConfig class này sẽ extend từ ResourceServerConfigurerAdapter. Class này sẽ giúp bảo mật các nguồn tài nguyên của ta – REST API. Để truy cập được thì người dùng cần phải được xác thực mới có thể truy cập được những API này.

+) SecurityConfig

  • Sau khi làm xong các bước trên bạn hãy chạy ứng dụng và vào postman để test như sau:

+) Đâu tiên ta sẽ vào thử trang web http://localhost:5000/users cần phải có được xác thực mới có thể truy cập

+) Và như trong hình hệ thống báo về lỗi unauthorized cho ta vì thế để giải quyết vấn đề đó chúng ta truy cập đến đường dẫn http://localhost:5000/oauth/token (vì ở đây mình dùng cổng 5000 nên sẽ truy cập đến localhost5000) để tạo ra access token và chọn type là basic auth

+) Sau đó chúng ta tạo 1 request mới đến đường dẫn http://localhost:5000/users và ở authorization chọn type là OAuth2.0 và dán đoạn access – token vừa nhận được vào ô trống như trong hình và ta sẽ truy cập được vào trang web đó

Author: Nguyễn Minh Quân

Đăng ký nhận bộ 150 thuật ngữ tiếng Anh chuyên ngành IT tại đây

Tìm hiểu thêm về mô hình Coding Bootcamp tại đây


Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.