Skip to content

Security: miralles66/spring-web

Security

SECURITY.md

Spring Boot Security Implementation Guide

πŸ”’ Security Overview

This guide documents the security implementation in the Spring Web application, which uses JWT (JSON Web Tokens) for stateless authentication and Spring Security for authorization.

🎯 Security Features

1. JWT Authentication

  • Stateless authentication using JSON Web Tokens
  • Secure token generation and validation
  • Configurable token expiration
  • Bearer token authentication

2. Password Security

  • BCrypt password hashing
  • Secure password storage
  • Automatic password encoding

3. Role-Based Access Control

  • Admin and User roles
  • Fine-grained endpoint authorization
  • Role-based access to resources

4. Secure Endpoints

  • CSRF protection (disabled for API, enabled for web forms)
  • Stateless sessions
  • Secure HTTP headers

πŸ”§ Configuration

JWT Configuration

Add the following to application.properties:

# JWT configuration
app.jwt.secret=yourSecureSecretKeyHere12345678901234567890123456789012
app.jwt.expiration=86400000  # 24 hours in milliseconds

Important: The JWT secret should be:

  • At least 32 characters long
  • Random and unpredictable
  • Stored securely (consider using environment variables in production)

Security Endpoints

# Public endpoints (no authentication required)
/api/auth/**

# Admin-only endpoints
/api/users/**

# All other endpoints require authentication
/**

πŸš€ Authentication Flow

1. User Login

graph TD
    A[Client] -->|POST /api/auth/login| B[AuthController]
    B -->|Authenticate| C[AuthenticationManager]
    C -->|Validate Credentials| D[UserDetailsService]
    D -->|Load User| E[UserRepository]
    E -->|Return User| D
    D -->|Return UserDetails| C
    C -->|Authentication Success| B
    B -->|Generate JWT| F[JwtUtil]
    F -->|Return Token| B
    B -->|Return AuthResponseDTO| A
Loading

2. Protected Requests

graph TD
    A[Client] -->|Request with Authorization Header| B[JwtAuthenticationFilter]
    B -->|Extract JWT Token| C[JwtUtil]
    C -->|Validate Token| D[JwtUtil]
    D -->|Extract Username| E[JwtUtil]
    E -->|Load UserDetails| F[UserDetailsService]
    F -->|Return UserDetails| B
    B -->|Set Security Context| G[SecurityContextHolder]
    G -->|Continue Request| H[Controller]
    H -->|Return Response| A
Loading

πŸ“‹ API Endpoints

Authentication Endpoints

Login

POST /api/auth/login
Content-Type: application/json

{
    "email": "[email protected]",
    "password": "admin123"
}

Response:

{
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}

There aren’t any published security advisories