Thẻ

#spring

99 Ngày Spring — Ngày 50: Security best practices

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.

15 thg 9, 20268 phút8
99 Ngày Spring — Ngày 49: Resource server

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.

14 thg 9, 20267 phút8
99 Ngày Spring — Ngày 48: OAuth2 login

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.

13 thg 9, 20267 phút8
99 Ngày Spring — Ngày 47: Phân quyền — role & authority

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.

12 thg 9, 20267 phút11
99 Ngày Spring — Ngày 46: Refresh token & logout

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".

11 thg 9, 20268 phút14
99 Ngày Spring — Ngày 45: JWT — filter xác thực

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.

10 thg 9, 20267 phút12
99 Ngày Spring — Ngày 44: JWT — phát hành token

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.

9 thg 9, 20267 phút15
99 Ngày Spring — Ngày 43: User từ database

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.

8 thg 9, 20267 phút14
99 Ngày Spring — Ngày 42: Cấu hình SecurityFilterChain

Cấu hình bean và lambda của Security 6, luật khớp theo thứ tự khai báo với anyRequest cuối cùng, BCryptPasswordEncoder và salt tự sinh — cùng hai chỗ hay làm sai nhất là CSRF và CORS.

7 thg 9, 20266 phút13