c22b4a2613
NUOVE FUNZIONALITÀ: - Aggiunto modulo CredentialManager per gestione centralizzata credenziali - Implementata UI Blazor per gestione credenziali (CredentialManagement.razor) - Supporto completo per credenziali database (SQL Server, MySQL, PostgreSQL, Oracle, SQLite, DB2, SAP HANA) - Gestione unificata REST API con supporto specifico per SAP B1 Service Layer e Salesforce - Test reali di connessione per database, SAP B1 e Salesforce OAuth2 - Selezione dinamica tipo servizio REST (Generico, SAP B1, Salesforce) con campi specifici - Persistenza sicura di credenziali con crittografia password e campi sensibili COMPONENTI AGGIUNTI: - CredentialManager/Models/: CredentialEntity, CredentialModels (DatabaseCredential, RestApiCredential, SapB1ServiceLayerCredential, SalesforceCredential) - CredentialManager/Services/: CredentialService, EncryptionService, DatabaseInitializer - CredentialManager/Data/: CredentialDbContext con Entity Framework - DataConnection/CredentialManagement/: Interfacce e servizi di integrazione - Data_Coupler/Pages/CredentialManagement.razor: UI completa per gestione credenziali MIGLIORAMENTI UI: - Form dinamica per REST API con campi specifici per tipo servizio - Validazione campi obbligatori per Salesforce (ClientId, ClientSecret, SecurityToken) - Test connessione in tempo reale dalla modale di inserimento/modifica - Rimozione sezioni separate per SAP B1 e Salesforce (ora unificate in REST API) - Gestione stato loading durante operazioni async PERSISTENZA AVANZATA: - Campo RestServiceType aggiunto a CredentialEntity con migrazione automatica - Serializzazione campi specifici Salesforce/SAP B1 in AdditionalParameters JSON - Mapping bidirezionale tra entità database e modelli business - Gestione nullability e conversioni tipo sicure SICUREZZA: - Crittografia AES-256 per password e token sensibili - Gestione sicura ConnectionString database - Validazione input e sanitizzazione dati TESTING E CONNETTIVITÀ: - Test autenticazione reale SAP B1 Service Layer - Test OAuth2 Salesforce con supporto Connected App - Test connettività database multi-provider - Logging dettagliato per debugging e monitoraggio CONFIGURAZIONE: - Dependency injection per tutti i servizi - Configurazione Entity Framework con SQLite - Tasks VS Code per build e run - Gestione connection string centralizzata CORREZIONI: - Risolti errori nullability in CredentialService - Aggiunto using Microsoft.JSInterop per IJSRuntime - Fix compilazione e warning Files modificati: 35+ file tra nuovi e aggiornati
104 lines
3.8 KiB
C#
104 lines
3.8 KiB
C#
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.Logging;
|
|
using CredentialManager;
|
|
using CredentialManager.Services;
|
|
using CredentialManager.Data;
|
|
using DataConnection.CredentialManagement.Interfaces;
|
|
using DataConnection.CredentialManagement.Services;
|
|
|
|
namespace DataConnection.CredentialManagement;
|
|
|
|
/// <summary>
|
|
/// Metodi di estensione per configurare i servizi di gestione credenziali per DataConnection
|
|
/// </summary>
|
|
public static class ServiceCollectionExtensions
|
|
{
|
|
/// <summary>
|
|
/// Aggiunge i servizi di gestione credenziali a DataConnection
|
|
/// </summary>
|
|
/// <param name="services">La collezione di servizi</param>
|
|
/// <param name="connectionString">Stringa di connessione per il database delle credenziali</param>
|
|
/// <returns>La collezione di servizi per il chaining</returns>
|
|
public static IServiceCollection AddDataConnectionCredentialManagement(
|
|
this IServiceCollection services,
|
|
string connectionString = "Data Source=credentials.db")
|
|
{
|
|
// Estrai il percorso del database dalla connection string
|
|
string databasePath;
|
|
if (connectionString.StartsWith("Data Source=", StringComparison.OrdinalIgnoreCase))
|
|
{
|
|
databasePath = connectionString.Substring("Data Source=".Length);
|
|
}
|
|
else
|
|
{
|
|
// Se non è una connection string, assumiamo che sia già un percorso
|
|
databasePath = connectionString;
|
|
}
|
|
|
|
// Aggiungi i servizi base di CredentialManager
|
|
services.AddCredentialManager(databasePath);
|
|
|
|
// Aggiungi il servizio di integrazione DataConnection
|
|
services.AddScoped<IDataConnectionCredentialService, DataConnectionCredentialService>();
|
|
|
|
return services;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Aggiunge i servizi di gestione credenziali con configurazione avanzata
|
|
/// </summary>
|
|
/// <param name="services">La collezione di servizi</param>
|
|
/// <param name="configure">Azione per configurare le opzioni</param>
|
|
/// <returns>La collezione di servizi per il chaining</returns>
|
|
public static IServiceCollection AddDataConnectionCredentialManagement(
|
|
this IServiceCollection services,
|
|
Action<DataConnectionCredentialOptions> configure)
|
|
{
|
|
var options = new DataConnectionCredentialOptions();
|
|
configure(options);
|
|
|
|
return services.AddDataConnectionCredentialManagement(options.ConnectionString);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Opzioni per la configurazione del DataConnectionCredentialManagement
|
|
/// </summary>
|
|
public class DataConnectionCredentialOptions
|
|
{
|
|
/// <summary>
|
|
/// Stringa di connessione per il database delle credenziali
|
|
/// </summary>
|
|
public string ConnectionString { get; set; } = "Data Source=credentials.db";
|
|
|
|
/// <summary>
|
|
/// Abilita il logging dettagliato
|
|
/// </summary>
|
|
public bool EnableDetailedLogging { get; set; } = false;
|
|
|
|
/// <summary>
|
|
/// Timeout per le operazioni sul database (in secondi)
|
|
/// </summary>
|
|
public int DatabaseTimeout { get; set; } = 30;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Interfaccia per il servizio di gestione credenziali specifico per DataConnection
|
|
/// Questa interfaccia estende le funzionalità base di CredentialManager
|
|
/// con metodi specifici per l'integrazione con DataConnection
|
|
/// </summary>
|
|
public interface IDataConnectionCredentialServiceConfiguration
|
|
{
|
|
/// <summary>
|
|
/// Configura il servizio con le opzioni specificate
|
|
/// </summary>
|
|
/// <param name="options">Le opzioni di configurazione</param>
|
|
void Configure(DataConnectionCredentialOptions options);
|
|
|
|
/// <summary>
|
|
/// Verifica la connessione al database delle credenziali
|
|
/// </summary>
|
|
/// <returns>True se la connessione è valida</returns>
|
|
Task<bool> TestConnectionAsync();
|
|
}
|