V monolitu stačil HTTP session cookie. V mikroslužbách potřebujete stateless autentizaci — každý request nese svůj token. OAuth 2.0 pro autorizaci, JWT pro tokeny. Standardy, které řeší 80 % bezpečnostních potřeb.
OAuth 2.0 flows¶
Authorization Code: Pro webové aplikace s backendem. Nejbezpečnější. Implicit: Pro SPA bez backendu. Token přímo v URL (méně bezpečné). Client Credentials: Pro service-to-service komunikaci. Bez uživatele. Resource Owner Password: Přímé zadání credentials. Jen pro trusted aplikace.
JWT: JSON Web Token¶
// JWT struktura: header.payload.signature
{
"sub": "user123",
"name": "Jan Novák",
"roles": ["ADMIN", "USER"],
"iat": 1457600000,
"exp": 1457603600
}
JWT je self-contained — obsahuje informace o uživateli, podepsané serverem. Služba ho ověří bez dotazu na auth server. Stateless = škálovatelné.
Implementace se Spring Security¶
Spring Security OAuth2 + spring-security-jwt. Auth server vydává tokeny, resource servery je ověřují. Sdílený signing key nebo asymetrické klíče (RSA).
Best practices¶
- Krátká expirace access tokenu (15-60 min)
- Refresh token pro obnovení bez re-login
- HTTPS povinně — token v HTTP je jako heslo v plaintextu
- Neukládejte citlivá data do JWT payload (je jen base64 encoded)
- Revokace: blacklist nebo krátká expirace
OAuth 2.0 + JWT je standard¶
Pro mikroslužby je stateless autentizace nutnost. OAuth 2.0 s JWT tokenem je průmyslový standard s výbornou podporou ve všech jazycích a frameworcích.