Condividi tramite


Programmazione sicura con l'adapter SQL

Come si proteggono le credenziali quando si usa il plug-in Add Adapter Service Reference Visual Studio?

Quando si usa il plug-in Aggiungi riferimento al servizio adapter per creare un client WCF, potrebbe essere necessario specificare un nome utente e una password per il database SQL Server. È necessario immettere le credenziali dalla scheda Sicurezza nella finestra di dialogo Configura adattatore . L'adapter SQL non fornisce un'opzione per specificare il nome utente e la password come parte dell'URI di connessione. Ciò garantisce quanto segue:

  • Le credenziali non verranno visualizzate nel campo Configura un URI della finestra di dialogo Aggiungi plug-in del servizio adattatore in cui chiunque può accedere alla schermata del computer può leggerli.

  • Le credenziali non verranno visualizzate nel file di configurazione generato dal plug-in Aggiungi plug-in del servizio adapter.

    Per altre informazioni su come generare un client WCF usando il plug-in Aggiungi plug-in Di riferimento al servizio adapter, incluso come immettere un nome utente e una password per il database SQL Server, vedere Ottenere metadati per le operazioni di SQL Server in Visual Studio usando l'adattatore SQL.

Quali sono le procedure consigliate per l'impostazione delle credenziali nel codice?

WCF fornisce la classe ClientCredentials per configurare le credenziali usate da un oggetto di comunicazione client, ad esempio ChannelFactory, per autenticarsi con un servizio. Usando la classe ClientCredentials , assicurarsi che WCF prenda qualsiasi meccanismo di autenticazione specificato nello stack di canali dell'oggetto e li applica allo scambio tra il client e il servizio.

Poiché l'adapter SQL è ospitato nel processo con l'applicazione che usa, non è imperativo usare la classe ClientCredentials per impostare le credenziali sugli oggetti di comunicazione client usati dall'applicazione che usa l'applicazione. Tuttavia, è considerata buona pratica farlo.

L'adapter SQL richiede l'uso della classe ClientCredentials per il passaggio delle credenziali a livello di codice. La proprietà di associazione AcceptCredentialsInUri viene ignorata dall'adapter SQL per impedire il passaggio delle credenziali nell'URI.

Nell'esempio seguente viene illustrato come usare la proprietà Credentials per impostare le credenziali per il database SQL Server in un ChannelFactory.

// Create binding and endpoint  
SqlAdapterBinding binding = new SqlAdapterBinding();  
EndpointAddress address = new EndpointAddress("mssql://mysqlserver//mydatabase?");  
  
// Create the channel factory   
ChannelFactory<IRequestChannel> factory = new ChannelFactory<IRequestChannel>(binding, endpointAddress))  
  
// Set user name and password  
factory.Credentials.UserName.UserName = "myuser";  
factory.Credentials.UserName.Password = "mypassword";  
  
// Open the channel factory  
factory.Open();  

Nell'esempio seguente viene illustrato come usare la classe ClientCredentials per impostare le credenziali per il database SQL Server in un client WCF.

// Initialize a new client for the SELECT operation on the Employee table   
SqlAdapterBinding binding = new SqlAdapterBinding();  
EndpointAddress address = new EndpointAddress("mssql://mysqlserver//mydatabase?");  
TableOp_dbo_EmployeeClient client = new TableOp_dbo_EmployeeClient(binding,address);  
  
// Set user name and password  
client.ClientCredentials.UserName.UserName = "myuser";  
client.ClientCredentials.UserName.Password = "mypassword";  
  
// Open the client  
client.Open();  

Come è possibile fornire uno scambio di dati più sicuro tra i limiti del processo?

L'adapter SQL è ospitato in-process con l'applicazione o il servizio che lo utilizza. Poiché l'adapter è ospitato in-process con il consumer, non è necessario fornire sicurezza sui messaggi scambiati tra il consumer e l'adapter SQL. Tuttavia, se l'applicazione o il servizio che utilizza invia messaggi che contengono informazioni riservate sul database attraverso un limite di processo a un altro servizio o client, è consigliabile adottare misure per fornire una protezione adeguata per questi dati nell'ambiente. Windows Communication Foundation (WCF) offre molte opzioni per proteggere i messaggi inviati tra client e servizi. Per altre informazioni sull'aiuto per proteggere i messaggi inviati tra client e servizi in WCF, vedere Protezione di servizi e client. Per altre informazioni generali sulle funzionalità di sicurezza fornite da WCF, vedere Windows Communication Foundation Security.

Vedere anche

Proteggere le applicazioni SQL
Procedure consigliate per proteggere l'adapter SQL