Raggruppamento delle connessioni

Con il raggruppamento delle connessioni le richieste specifiche effettuate all'interno di una singola applicazione vengono associate a un pool di connessioni definito. Questa operazione può essere necessaria in caso di connessione, tramite un'applicazione di livello intermedio, a un server back-end per conto di un utente mediante un protocollo di autenticazione che supporti la delega, ad esempio Kerberos, oppure in caso di utilizzo di un'applicazione di livello intermedio in cui vengono fornite le credenziali dell'utente, come nell'esempio che segue. Si supponga ad esempio che un utente, Fausto, visiti un sito Web interno in cui sono fornite informazioni sul suo stipendio. Dopo l'autenticazione di Fausto, le credenziali di Fausto vengono utilizzate dal server dell'applicazione di livello intermedio per connettersi al server back-end e recuperare le informazioni sullo stipendio. Il sito viene quindi visitato da Elena, che richiede informazioni sul proprio stipendio. Poiché tramite l'applicazione di livello intermedio è già stata stabilita una connessione utilizzando le credenziali di Fausto, la risposta fornita dal server back-end contiene le informazioni relative a Fausto. Se tuttavia ciascuna richiesta inviata al server back-end viene assegnata a un gruppo di connessioni basato sul nome utente, ciascun utente apparterrà a un pool di connessioni separato e non potrà condividere accidentalmente le informazioni di autenticazione con altri utenti.

Per assegnare una richiesta a un gruppo di connessioni specifico è necessario assegnare un nome alla proprietà ConnectionGroupName della classe WebRequest prima di effettuare la richiesta. Nell'esempio che segue viene illustrato come assegnare informazioni utente per raggruppare le connessioni, presupponendo che le variabili UserName, SecurelyStoredPassword e Domain siano impostate prima che questa sezione di codice venga chiamata e che UserName sia univoco.

// Create a secure group name.
SHA1Managed Sha1 = new SHA1Managed();
Byte[] updHash = Sha1.ComputeHash(Encoding.UTF8.GetBytes(UserName + SecurelyStoredPassword + Domain));
String secureGroupName = Encoding.Default.GetString(updHash);

// Create a request for a specific URL.
WebRequest myWebRequest=WebRequest.Create("http://www.contoso.com");
      
myWebRequest.Credentials = new NetworkCredential(UserName, SecurelyStoredPassword, Domain); 
myWebRequest.ConnectionGroupName = secureGroupName;

WebResponse myWebResponse=myWebRequest.GetResponse();

// Insert the code that uses myWebResponse.

MyWebResponse.Close();

[Visual Basic]

' Create a secure group name.
Dim Sha1 As New SHA1Managed()
Dim updHash As [Byte]() = Sha1.ComputeHash(Encoding.UTF8.GetBytes((UserName + SecurelyStoredPassword + Domain)))
Dim secureGroupName As [String] = Encoding.Default.GetString(updHash)

' Create a request for a specific URL.
Dim myWebRequest As WebRequest = WebRequest.Create("http://www.contoso.com")

myWebRequest.Credentials = New NetworkCredential(UserName, SecurelyStoredPassword, Domain)
myWebRequest.ConnectionGroupName = secureGroupName

Dim myWebResponse As WebResponse = myWebRequest.GetResponse()

' Insert the code that uses myWebResponse.
MyWebResponse.Close()

L'assegnazione di un valore differente alla variabile UserName nelle richieste successive fa sì che vengano stabilite nuove connessioni al server utilizzando le credenziali corrette.

Vedere anche

Gestione delle connessioni