
Mục lục bài viết 10 phần
Nền tảng OAuth 2.0/OIDC có thể hoạt động tốt ở tải đều nhưng quá tải khi hàng nghìn client cùng refresh token sau outage, hoặc từ chối token hợp lệ khi JWKS cache chưa nhận key mới. Test plan phải đo cả capacity, tính đúng giao thức, clock skew, key rotation và hành vi của resource server trong thời điểm chuyển trạng thái.
Bài viết giúp bạn
- Identity test cần trả lời câu hỏi nào
- Topology và trust boundary
- Traffic profile và biến số phải khóa
Identity test cần trả lời câu hỏi nào
#OAuth 2.0 là framework ủy quyền; OpenID Connect bổ sung lớp identity. Authorization code, client credentials, refresh token và device flow tạo tải khác nhau. Không nên dùng password grant hoặc mô phỏng luồng đã deprecated chỉ vì công cụ dễ tạo traffic.
Mục tiêu gồm token issuance đúng claim/audience/scope, refresh thành công theo policy, token giả/hết hạn bị từ chối, rate limiting không làm một tenant gây đói tenant khác, và key rotation không gây spike 401. Security test và load test phải liên kết nhưng không trộn payload tấn công vào production.
Topology và trust boundary
#Topology gồm client emulator, authorization server/IdP, database/cache, JWKS endpoint, API gateway và resource server. Nếu có WAF, load balancer, service mesh hoặc multi-region, giữ chúng trong đường production-like; đồng thời có một nhánh trực tiếp để tạo baseline.
Điểm đo cần ở client, token endpoint, IdP dependencies, gateway và resource server. Đồng bộ clock, ghi request correlation ID và tách dữ liệu test khỏi tài khoản thật. Secret/private key không được ghi vào pcap hoặc log bundle.

Traffic profile và biến số phải khóa
#Profile gồm tỷ lệ login mới, refresh, client credentials, logout/revocation, discovery/JWKS fetch, tenant, client type, token lifetime và session duration. Phân bố arrival theo thực tế: steady state, morning login, reconnect sau outage và synchronized refresh. Randomize token expiry/jitter nếu ứng dụng thật có cơ chế này.
Khóa phiên bản IdP, signing algorithm, key count, cache headers, database/cache topology, TLS, MFA/conditional access, rate-limit policy và backend latency. Không benchmark MFA bằng cách gửi mã thật hàng loạt; mock hoặc test tenant theo hướng dẫn nền tảng.
KPI và bằng chứng pass/fail
#Bằng chứng gồm sanitized request/response metadata, token claim đã redaction, server metrics, database/cache metrics, JWKS timeline, gateway log và trace ID. Không lưu refresh token hoặc private key trong báo cáo.
- KPI: Token success rate · Cách đo: 2xx hợp lệ / tổng request · Ý nghĩa: Availability theo grant/client
- KPI: Latency p50/p95/p99 · Cách đo: Client timestamp · Ý nghĩa: Trải nghiệm login/refresh
- KPI: Error distribution · Cách đo: 400/401/429/5xx theo reason · Ý nghĩa: Phân biệt policy và capacity
- KPI: Refresh amplification · Cách đo: Request mới / session phục hồi · Ý nghĩa: Retry storm
- KPI: JWKS cache hit/fetch · Cách đo: Gateway/resource server · Ý nghĩa: Phụ thuộc endpoint/key cache
- KPI: 401 false reject · Cách đo: Token hợp lệ bị từ chối · Ý nghĩa: Rotation/clock/cache lỗi
- KPI: Fairness · Cách đo: Success/latency theo tenant/client · Ý nghĩa: Noisy neighbor
- KPI: Recovery time · Cách đo: Fault đến success/p99 ổn định · Ý nghĩa: Failover/resilience
Ma trận test chức năng và tải
#- Kịch bản: Auth code + PKCE hợp lệ · Kỳ vọng: Token đúng issuer/audience/scope · Bằng chứng: Client + claim check
- Kịch bản: Refresh hợp lệ · Kỳ vọng: Token mới theo policy · Bằng chứng: Token endpoint log
- Kịch bản: Token hết hạn/sai audience · Kỳ vọng: Resource server từ chối · Bằng chứng: 401 reason
- Kịch bản: Client secret sai · Kỳ vọng: Không cấp token · Bằng chứng: 4xx, không lộ chi tiết
- Kịch bản: Rate limit · Kỳ vọng: 429 có policy rõ · Bằng chứng: Header/log/fairness
- Kịch bản: Refresh storm · Kỳ vọng: Hệ thống giữ SLO hoặc degrade có kiểm soát · Bằng chứng: p99/error/dependency
- Kịch bản: Key mới/kid mới · Kỳ vọng: Validator lấy JWKS và chấp nhận · Bằng chứng: JWKS/cache/401
- Kịch bản: Key cũ rút quá sớm · Kỳ vọng: Negative test trong lab · Bằng chứng: False reject timeline
Test plan token endpoint và refresh storm
#Không dùng credential người dùng thật. Với external IdP/SaaS, tuân thủ rate limit và test policy của nhà cung cấp; không coi việc gây 429 trên dịch vụ chung là load test hợp lệ.
- Ghi version, topology, grant, token lifetime, rate limit và clock status.
- Chạy từng grant ở tải thấp; xác nhận claim, scope, audience và error behavior.
- Tăng arrival theo bậc, giữ client mix/payload cố định; theo dõi dependency.
- Chạy spike login và synchronized refresh; so với profile có jitter.
- Tạo retry theo exponential backoff/jitter và một profile retry sai để thấy amplification.
- Tách tenant/client, kiểm tra quota/fairness và noisy neighbor.
- Gây chậm cache/database trong lab; đo timeout, circuit breaker và recovery.
- Lặp điểm mục tiêu ít nhất ba lần, reset state theo runbook.
Test plan JWKS rotation và failover
#Publish key mới trong JWKS trước khi dùng ký token; chờ cache window phù hợp, bắt đầu phát token có kid mới, duy trì key cũ đủ lâu cho token cũ hết hiệu lực/cửa sổ grace, rồi mới retire. Kiểm tra nhiều resource server với cache state khác nhau, một node vừa restart và một node mất kết nối tạm thời tới JWKS.
Trong failover, chuyển IdP/load balancer/region theo runbook khi traffic ổn định. Đo spike 401/5xx, token issuance, database consistency và client retry. Pass cần cả token cũ và mới được xử lý đúng trong từng giai đoạn, không chỉ endpoint /health xanh.

Đọc kết quả và khoanh vùng lỗi
#429 tăng nhưng CPU thấp thường là policy/quota; 5xx đi cùng database/cache latency gợi ý dependency. 401 chỉ xuất hiện trên một gateway node sau rotation thường liên quan JWKS cache hoặc clock. Nếu client tạo request tăng theo cấp số nhân sau outage, xem retry/backoff trước khi tăng capacity.
Đối chiếu kid, issuer, audience, expiration và clock giữa token, validator và IdP. Không log toàn token ở môi trường dùng thật; dùng fingerprint/correlation ID và công cụ kiểm tra claim an toàn.
Giới hạn của kết luận
#Kết quả phụ thuộc IdP, phiên bản, grant, client library, signing algorithm, token lifetime, dependency và topology. Load test không chứng minh chống mọi tấn công identity; functional security test không chứng minh capacity. SaaS IdP có quota/multi-tenant behavior không thể suy ra từ lab tự quản lý.
Khái niệm cần nhớ
#- OAuth 2.0: Framework ủy quyền cho client truy cập tài nguyên.
- OIDC: Lớp identity xây trên OAuth 2.0.
- PKCE: Cơ chế ràng buộc authorization request và token exchange.
- JWKS: Tập public key JSON để validator xác minh chữ ký.
- kid: Định danh key trong header token.
- Refresh storm: Nhiều client refresh đồng thời sau expiry/outage.
- Clock skew: Chênh lệch thời gian ảnh hưởng iat, nbf, exp.
Khái niệm cần nhớ
- DUT / SUT
- Thiết bị hoặc toàn bộ hệ thống đang là đối tượng của bài kiểm thử.
- Steady state
- Giai đoạn tải đã ổn định và đủ điều kiện để lấy số liệu đại diện.
- Pass / fail
- Kết luận dựa trên ngưỡng đã thống nhất, luôn đi cùng topology, cấu hình và điều kiện đo.
TÀI LIỆU ĐỐI CHIẾUTài liệu tham khảo5 nguồn +
Nội dung được biên soạn độc lập, theo hướng vendor-neutral và đối chiếu các tài liệu gốc dưới đây. Tính năng sản phẩm cần được kiểm tra lại theo phiên bản đang sử dụng.
NetVali ưu tiên nguồn tiêu chuẩn và tài liệu chính thức; phân biệt khuyến nghị triển khai với yêu cầu của tiêu chuẩn; không công bố thông số sản phẩm chưa gắn với phiên bản và điều kiện đo.
