Thẻ
#spring

CSRF chỉ phụ thuộc một câu hỏi — trình duyệt có tự gửi thông tin đăng nhập không, CORS bảo vệ người dùng chứ không bảo vệ server, secret lỡ commit thì phải đổi — và rate limiting, thứ Spring Security không có sẵn.

Một dòng issuer-uri là đủ, JWKS cho phép hai mươi service verify token mà không service nào giữ bí mật, vì sao bỏ kiểm iss là lỗ hổng chết người — và scope khác role ở chỗ nào.

Luồng authorization code năm bước và vì sao phải qua code thay vì trả token thẳng, tham số state chống CSRF, cấu hình oauth2Login gọn tới bất ngờ — và vì sao khóa định danh phải là cặp nhà cung cấp cộng id.

Role chỉ là authority có tiền tố ROLE_, vì sao hasRole("ROLE_ADMIN") luôn cho 403, thiết kế role gom quyền để thêm vai trò không phải sửa code — và hai thứ im lặng làm hỏng method security.

Access token 15 phút cộng refresh token 7 ngày lưu database, vì sao refresh token không nên là JWT, rotation biến việc dùng lại token thành chuông báo động — và sự thật rằng đăng xuất của JWT là "không cấp thêm".

OncePerRequestFilter đọc header Bearer và đặt SecurityContext, lắp trước UsernamePasswordAuthenticationFilter cùng cấu hình STATELESS, khi nào tắt CSRF là hợp lệ — và refresh token lưu DB để lấy lại khả năng thu hồi.

Cấu trúc ba phần của JWT và vì sao payload không hề được mã hóa, ký token bằng khóa bí mật đủ dài, endpoint đăng nhập dùng lại AuthenticationManager — cùng đánh đổi lớn nhất: không thu hồi được.

UserDetailsService chỉ đòi một method, luồng đăng nhập qua DaoAuthenticationProvider và PasswordEncoder, entity người dùng cùng chuyện tiền tố ROLE_ — và bốn cái bẫy, mở đầu là thông báo lỗi tiết lộ quá nhiều.
