Learning Outcome & Exercises: Spring Security

2 câu hỏi~10 phút đọc, vài giờ làm labTừ khóa: learning outcome, Basic, Intermediate, Challenge, evidence

Tổng kết chương Spring Security: học xong mình phải làm được gì, và làm bài tập nào để chứng minh?

Đọc hiểu chưa đủ để đi phỏng vấn. Mỗi chương kết thúc bằng những việc làm được và chứng minh được: có code chạy, có test cho cả trường hợp lỗi, có log hoặc số đo. Bài tập nằm trong repo riêng java-backend-interview-labs, thư mục labs/spring-security.

1. Mục tiêu đầu ra

Học xong chương này, bạn tự làm được:

2. Basic: Filter chain

Trạng thái: ⬜ Chưa triển khai: chưa có code/test, chưa tính là hoàn thành

In danh sách filter đang chạy, bảo vệ /api/** và mở /actuator/health.

Bài liên quan: Filter chain, Authentication flow

Hoàn thành khi:

3. Intermediate: JWT resource server

Trạng thái: ⬜ Chưa triển khai: chưa có code/test, chưa tính là hoàn thành

Xác thực JWT ký HS256/RS256 (key qua biến môi trường), @PreAuthorize theo scope.

Bài liên quan: JWT, Access & refresh token, Authorization

Hoàn thành khi:

4. Challenge: Method security & Keycloak

Trạng thái: ⬜ Chưa triển khai: chưa có code/test, chưa tính là hoàn thành

Dùng Keycloak realm của lab keycloak làm issuer; test bằng jwt() của spring-security-test và một test end-to-end với token thật.

Bài liên quan: Resource Server & Keycloak, Method security & test, Password, CORS, CSRF

Hoàn thành khi:

5. Tiêu chí hoàn thành chung

6. Lab và trạng thái

MứcBài tậpTrạng tháiTest / bằng chứng
BasicFilter chain⬜ Chưa triển khai: chưa có code/test, chưa tính là hoàn thành—
IntermediateJWT resource server⬜ Chưa triển khai: chưa có code/test, chưa tính là hoàn thành—
ChallengeMethod security & Keycloak⬜ Chưa triển khai: chưa có code/test, chưa tính là hoàn thành—

Repo lab: java-backend-interview-labs/labs/spring-security. TODO: link GitHub là placeholder cho tới khi repo được push.

Phỏng vấn hỏi về Spring Security, câu nào hay gặp nhất và trả lời sao?

Q1. 401 và 403 khác nhau thế nào?

🇻🇳 Tiếng Việt:

401 là chưa xác thực được: thiếu hoặc sai token. 403 là đã biết bạn là ai nhưng bạn không có quyền với tài nguyên này.

🇬🇧 English:

401 means the request is not authenticated: the token is missing or invalid. 403 means we know who you are but you are not allowed to access this resource.

Cách nhớ ngắn gọn


Tự kiểm tra

Bài tập Basic (Filter chain) được coi là xong khi nào?

Test 401 và 200. Chưa có code chạy và bằng chứng thì chưa tính là xong.

Bài tập Intermediate (JWT resource server) được coi là xong khi nào?

Test 401/403/200; Không có secret trong repo. Chưa có code chạy và bằng chứng thì chưa tính là xong.

Bài tập Challenge (Method security & Keycloak) được coi là xong khi nào?

Ghi rõ phần nào cần Docker; Evidence token decode (đã che chữ ký). Chưa có code chạy và bằng chứng thì chưa tính là xong.