Nội dung
Danh sách bài học
- 01~4 phút
Authentication — tổng quan
Module này mổ xác thực: lookup user + BCrypt, form login/HTTP Basic, và JWT stateless (structure, issue, refresh).
- 02~12 phút
UserDetailsService & BCrypt — user lookup và password hashing
Cơ chế bên dưới của UserDetailsService: Spring gọi loadUserByUsername như thế nào, trả về gì, và tại sao. BCrypt — tại sao không dùng MD5/SHA, cơ chế salt per-password + cost factor adaptive, và tại sao chậm là thiết kế đúng. Account state flags (locked/disabled/expired) trong UserDetails.
- 03~14 phút
Form login, HTTP Basic & session fixation — cơ chế xác thực truyền thống
UsernamePasswordAuthenticationFilter nhận POST /login, DaoAuthenticationProvider verify BCrypt, session fixation protection đổi session ID sau login. Khi nào chọn Form Login, HTTP Basic hay JWT.
- 04~13 phút
JWT structure & validation — base64url, signing, Spring oauth2ResourceServer
JWT (RFC 7519) là token tự đóng gói gồm header.payload.signature mã hoá base64url. Bài này bóc đúng một thứ: cấu trúc token, cơ chế signing HMAC (HS256) vs RSA (RS256), và Spring Security oauth2ResourceServer.jwt() validate signature + expiry tự động — cùng lý do chọn RS256 cho microservices.
- 05~14 phút
Issue, refresh và revoke JWT — vòng đời token trong production
NimbusJwtEncoder issue access token ngắn + refresh token dài ở login endpoint. Refresh endpoint xoay token. Ba chiến lược revocation: short expiry, Redis denylist, DB refresh store. Pitfall secret từ env, không lưu sensitive data trong payload.
- 06~4 phút
Authentication — tổng kết
Tóm tắt Authentication.