SAM (Secure API Manager)
Gestione sicura di API key con Kotlin e Spring Boot
Cos’è SAM?
SAM è un’applicazione sviluppata in Kotlin con Spring Boot per la gestione sicura di chiavi API. Supporta autenticazione per endpoint protetti, gestione della scadenza delle chiavi e organizzazione per progetto e proprietario.
Caratteristiche
- CRUD completo delle chiavi API
- Autenticazione tramite API key per endpoint sicuri
- Gestione della scadenza delle chiavi
- Organizzazione per progetto e proprietario
- Documentazione API via Swagger/OpenAPI
- Integrazione con InfluxDB (fallback in-memory disponibile)
Tech Stack
- Kotlin
- Spring Boot & Spring Security
- InfluxDB
- Gradle
Requisiti
- Java 17 o superiore
- InfluxDB (opzionale)
- Gradle 7+
Installazione
- Clona il repository
- Configura
application.yml
con i parametri di InfluxDB - Avvia l’applicazione:
./gradlew bootRun
L’app sarà disponibile su http://localhost:5000
API Documentation
Swagger UI è disponibile su:
/swagger-ui/index.html
Principali endpoint API
Gestione chiavi
POST /api/keys
– Crea una nuova chiaveGET /api/keys
– Elenca tutte le chiaviGET /api/keys/{id}
– Recupera una chiave per IDDELETE /api/keys/{id}
– Elimina una chiavePUT /api/keys/{id}/deactivate
– Disattiva una chiave
Endpoint protetti
GET /api/hello
– Esempio di endpoint protetto
Autenticazione
Gli endpoint protetti richiedono un’intestazione con la chiave:
X-API-KEY: la-tua-api-key
Struttura del progetto
src/
├── main/
│ ├── kotlin/com/apikeys/
│ │ ├── config/ # Configurazioni
│ │ ├── controller/ # Controller REST
│ │ ├── dto/ # DTO
│ │ ├── exception/ # Gestione eccezioni
│ │ ├── model/ # Modelli di dominio
│ │ ├── repository/ # Accesso ai dati
│ │ ├── security/ # Sicurezza
│ │ ├── service/ # Logica applicativa
│ │ └── util/ # Utility
└── test/
└── kotlin/ # Test
Come contribuire
- Fork del progetto
git checkout -b feature/nome-feature
git commit -m "Aggiunta nuova feature"
git push origin feature/nome-feature
- Apri una Pull Request
Distribuito sotto licenza MIT