| Authorization Server | Resource Server | |
|---|---|---|
| Vai trò | Identity provider — phát token | Bảo vệ API — validate token |
| Trách nhiệm | Xác thực user, phát JWT, refresh, revoke | Verify token, check scope, cho/từ chối request |
| Library | spring-authorization-server | spring-security-oauth2-resource-server |
| Quan hệ | 1 AuthServer → N Resource Server |
Resource Server config:
java
http.authorizeHttpRequests(a -> a
.requestMatchers("/api/admin/**").hasAuthority("SCOPE_admin")
.anyRequest().authenticated())
.oauth2ResourceServer(o -> o.jwt(j -> j.jwkSetUri("https://auth/.well-known/jwks.json")));Validate (local, không gọi auth server): lấy public key từ JWKS (cache) → verify chữ ký → check iss, exp, aud, scope.
Thực tế 2026: đa số dùng Keycloak (self-host) hoặc Auth0/Okta (managed); Spring app chỉ làm Resource Server. Tự viết Authorization Server chỉ khi cần đặc biệt (multi-tenant, custom flow).