🟦 TEAM-1 | Auth
Настроить Spring Security с JWT-аутентификацией.
Что сделать
SecurityConfig — SecurityFilterChain:
- Публичные:
POST /api/auth/login, GET /actuator/**, /swagger-ui/**, /v3/api-docs/**
- Всё остальное:
authenticated()
JwtUtil: генерация + валидация токена (библиотека jjwt 0.12)
JwtAuthFilter extends OncePerRequestFilter: читает Authorization: Bearer <token>, валидирует, устанавливает SecurityContext
BCryptPasswordEncoder bean
Эндпоинт логина
POST /api/auth/login
// Request
{ "username": "admin", "password": "secret" }
// Response 200
{ "token": "eyJ...", "expiresIn": 86400000 }
Конфиг в application.yml
app:
jwt:
secret: ${JWT_SECRET}
expiration-ms: ${JWT_EXPIRATION_MS:86400000}
Acceptance criteria
🟦 TEAM-1 | Auth
Настроить Spring Security с JWT-аутентификацией.
Что сделать
SecurityConfig—SecurityFilterChain:POST /api/auth/login,GET /actuator/**,/swagger-ui/**,/v3/api-docs/**authenticated()JwtUtil: генерация + валидация токена (библиотекаjjwt 0.12)JwtAuthFilter extends OncePerRequestFilter: читаетAuthorization: Bearer <token>, валидирует, устанавливаетSecurityContextBCryptPasswordEncoderbeanЭндпоинт логина
POST /api/auth/loginКонфиг в
application.ymlAcceptance criteria
/actuator/healthдоступен без токена