Utilizarea parolelor codate greu într-o aplicație web nu este întotdeauna de dorit. Microsoft SQL Server oferă posibilitatea de a utiliza "conexiuni de încredere" pentru a autentifica o conexiune la o bază de date. În acest caz, numai numele de utilizator și așa-numitul jet de autentificare sunt transmise prin rețea. Parola utilizatorului nu este transmisă prin rețea. Când încercați să utilizați conexiuni de încredere într-o aplicație ASP.NET, puteți rula unele dintre complexitățile asociate caracteristicilor ASP.NET. În special, acest lucru se datorează setărilor contului în care funcționează fluxul de lucru ASP.NET.
Dacă serverul web IIS 5.x și SQL Server sunt pe același computer, apoi utilizați o conexiune de încredere nu este o problemă - suficient pentru a da drepturile necesare pentru utilizator ASPNET la obiectele bazei de date și să le adăugați la linia de «integrat de securitate = SSPI» conexiune sau «Trusted_Connection = true» . Șirul de conectare poate, de exemplu, să arate astfel:
În cazul în care SQL Server se execută pe același computer cu IIS 6 pentru a accesa baza de date, adăugați grupul local de IIS_WPG în lista conectările SQL Server și acordă permisiunile necesare pentru obiectele bazei de date. Metoda de autentificare pe SQL Server trebuie să fie amestecată (SQL Server și Windows).
Marea problemă este atunci când SQL Server și IIS / ASP.NET se află pe computere diferite, deoarece în acest caz nu există un cont ASPNET sau un grup IIS_WPG pe serverul SQL.
Există următoarele modalități de a rezolva această problemă:
- Rulați ASP.NET cu un cont de domeniu
- Utilizând un nume de utilizator și o parolă explicită
- Utilizarea impersonalizării
- Creați o copie a contului ASPNET pe serverul SQL (pentru IIS 5.x)
- Creați propriul fond de aplicații în IIS6
Rularea unei aplicații web în cadrul unui cont de domeniu este o practică periculoasă. În cazul unui atac reușit pe un server Web, un atacator va avea acces la întreaga rețea locală în contextul unui utilizator de domeniu autentificat.
Metoda numărul 4 (numele de utilizator și parola specificate în mod explicit) în contextul acestui articol nu ne convine. Cu toate acestea, rețineți că șirul de conectare poate fi stocat nu numai în fișierul web.config, ci și în registru. Această metodă este descrisă în detaliu în Baza de cunoștințe Microsoft sub numărul 329290 și în MSDN în articolul "Building Secure ASP.NET Applications".
Impersonalizatsiya
Următorul pas este să configurați ASP.NET să ruleze în numele contului pe care l-ați creat. Acest lucru se poate face în două moduri: o indicație clară a numelui și a parolei în fișierul web.config, sau în timp ce modificarea setărilor în IIS Manager și editarea web.config.
Pentru a specifica explicit numele și parola în numele cărora va funcționa ASP.NET, vom adăuga o secțiune
O astfel de metodă împiedică realizarea scopului nostru - nu specificați explicit parolele în setările aplicației.
Din moment ce nu vrem să specificați în mod explicit parola în web.config, apoi eliminați din configurația de mai sus, un nume de utilizator și parola, permițând astfel IIS pentru a specifica numele unui cont de utilizator pentru a rula procesul de lucrător ASP.NET. secțiune
Acum, rulați IIS Manager, și deschideți proprietățile folderul rădăcină al aplicației noastre, accesați fila «Directory Security», apăsați «Edit. "Și în dialogul care apare, specificați numele de utilizator și parola.
În cele din urmă, reporniți IIS cu comanda: iisreset / restart
Creați propriul fond de aplicații în IIS6
Pentru IIS6, calea cea mai optimă este crearea unei baze de aplicații proprii. Un pool este un flux de lucru dedicat IIS, în cadrul căruia sunt găzduite aplicații individuale. Pentru fiecare piscină, puteți seta performanța, monitorizarea sănătății și, cel mai important, în cadrul acestui articol, un cont în care aplicațiile sunt pornite. Vom avea din nou nevoie să creați aceleași conturi pe serverul de web și serverul de bază de date. Pentru a crea o nouă grupă de aplicații, porniți Managerul IIS, dați clic dreapta pe elementul Aplicații și selectați Nou -> Pool de aplicații din meniul de comenzi rapide. “. Introduceți numele noii baze de date și faceți clic pe OK. Deschideți acum proprietățile noului pool prin meniul contextual, accesați fila "Identitate" și introduceți numele și parola contului creat anterior. Acum trebuie să spuneți aplicației să utilizeze noul bazin. Să ne deschidă o sucursală «Site-uri web», pentru a alege directorul aplicației, deschideți dialogul de proprietăți, du-te la fila «Home Directory» și selectați piscina din meniul drop-down «Application Pool» lista.
Efecte secundare
Utilizarea conexiunilor de încredere are și efecte secundare. Dacă conexiunile sunt deschise în conturi diferite, atunci aceste conexiuni nu intră în grupul de conexiuni. Acest lucru crește încărcarea atât pe IIS cât și pe SQL Server. Conexiunile de încredere necesită, de asemenea, mai multe resurse de calcul în procesul de autentificare, comparativ cu autentificarea SQL, deoarece autentificarea numelui de utilizator este efectuată de serviciul de sistem Windows în afara procesului serverului SQL. Atunci când se utilizează conturi de domeniu, sarcina suplimentară este plasată și pe controlerele de domeniu. În orice caz, asigurați-vă că puneți accentul pe aplicațiile dvs. înainte de implementare!
concluzie
Nu există o singură modalitate "corectă" de a utiliza o conexiune de încredere în ASP.NET. Puteți alege din mai multe metode, în funcție de cerințele și nevoile aplicației dvs.