B-Arts DocumentationIndice generale

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 è:

  1. il client ottiene o calcola la SecureKey secondo il protocollo applicativo concordato;

  2. la invia nell'header B-Arts;

  3. BApiServiceSecureKey legge il valore dalla richiesta;

  4. BApiFilterBase recupera la password del servizio;

  5. BCrypter.GetSecurePassword produce la chiave attesa;

  6. BCrypter.CheckSecurePassword verifica il valore ricevuto;

  7. 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 BApiFilter con il controllo richiesto;

  • usare Cnn quando 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.

Documenti correlati