BWebApiModel
Scopo
BWebApiModel è il template ASP.NET Core Web API dell'ecosistema B-Arts. Predispone configurazione, database opzionale, log, risposte HTTP uniformi, Swagger e protezione delle operazioni tramite SecureKey.
Struttura
BWebApiModel/
|-- BBaseClasses/
| |-- BApiControllerBase.cs
| |-- BApiFilterBase.cs
| |-- BApiFilterAttributes.cs
| |-- BAppSetting.cs
| |-- BBatch.cs
| `-- BLog.cs
|-- BPartialClasses/
| |-- BApiFilterBase.cs
| |-- BAppSetting.cs
| `-- BLog.cs
|-- Controllers/
| `-- BWebApiController.cs
|-- Moduli/
| `-- ModGenerale.cs
|-- Program.cs
|-- BAppSettings.config
`-- BWebApiModel.http
Program.cs
Configura:
controller ASP.NET Core;
IHttpContextAccessor;servizio singleton
BApiServiceSecureKey;Swagger/OpenAPI;
schema di sicurezza API key nell'header;
HTTPS, autorizzazione e mapping dei controller.
Il nome dell'header deve provenire da BApiServiceSecureKey.KeyHeaderSecureKey. Nei client e nel file .http la chiave va inviata nell'header previsto dal framework, normalmente B-SECURE-KEY.
SecureKey
Il flusso previsto è:
il client ottiene o calcola la SecureKey secondo il protocollo applicativo concordato;
la invia nell'header B-Arts;
BApiServiceSecureKeylegge il valore dalla richiesta;BApiFilterBaserecupera la password del servizio;BCrypter.GetSecurePasswordproduce la chiave attesa;BCrypter.CheckSecurePasswordverifica il valore ricevuto;una chiave assente o non valida blocca l'azione.
La password di servizio non deve essere restituita dall'API, scritta nei log o inserita direttamente negli esempi. Deve provenire da configurazione sicura.
BApiFilter e livelli di controllo
BApiFilterAttribute riceve BApiFilterBase.eCheckType:
| Valore | Controlli previsti |
|---|---|
Base |
Configurazione e stato di base. |
Database |
Disponibilità della connessione quando UseDB è attivo. |
SecureKey |
Presenza e validità della SecureKey. |
All |
Tutti i controlli. |
Applicare il livello minimo coerente con l'operazione. Gli endpoint diagnostici possono usare Base; le operazioni protette e con accesso dati usano normalmente All.
BApiControllerBase
Il controller base carica setting, configurazione log, connessione opzionale e servizio SecureKey. Espone:
OkMessage<T>;BoolMessage;BadRequestMessage<T>;ErrorMessage<T>;StatusCodeMessage<T>;GetHttpResponseString;WriteLog;metodi protetti di invio e-mail.
Le risposte usano BHTTPApiResponse<T> per mantenere forma uniforme fra successo ed errore.
Controller applicativi
Un'azione deve:
dichiarare verbo HTTP e route;
applicare
BApiFiltercon il controllo richiesto;usare
Cnnquando serve il database;restituire le funzioni risposta del controller base;
registrare internamente l'eccezione;
non inviare al client dettagli tecnici o credenziali.
Configurazione
BAppSettings.config contiene impostazioni DB, log, e-mail, libreria, social login e SecureKey. Password DB, SMTP e password del servizio devono essere configurate per ambiente e non pubblicate nel repository.
